Как стать автором
Обновить

Комментарии 38

почему «unux»?
Ах! Как же я так — ошибся в святом для меня слове!!! Спс! Поправил. И так к слову — радует что все же остальная часть предложения не вызывает сомнений :)
Не знаю, где поправили, но почему «*nux-оид», а не «*nix-оид»?
гм… unux было написано в конце :) а про *nuxoid — я только сейчас увидел — просто сначала написал Linuxoid :), но потом решил раскинуть пальцами — в общем действительно аляповато вышло :)

Исправил, спасибо!
Опечаточка по Фрейду :)
А для каких языков вы используйте cscope?
Пока только для php и для python. На сайте cscope в примерах активно фигурирует java.
Спасибо. А то я натыкался уже на эту утилиту, но так как там нет ни слова о php, то и не использовал… Теперь буду пробовать :)
Рад помочь ;)
Очень интересно было бы прочитать прочитать про полную настройку вима. Ибо у меня ситуация очень похожа — тоже эклипс, тоже не очень устраивает быстродействие (хотя 3 гига памяти на моем ноуте он еще ни разу не занимал), так же использую для php и python (ну и соответственно html, javascript, css). Давно собираюсь попробовать emacs или vim, но времени на то чтобы сесть и с нуля все разобрать нету. Было бы очень интересно начать с быстрого старта на примере уже готовой сборки.

По опубликованым вами ссылкам конечно же сейчас пойду, но хотелось бы иметь инструкцию в одном месте от и до.
habrahabr.ru/blogs/vim/53435/ и упомянутая там статья с allaboutvim.blogspot.com вполне может сойти под то, что вам надо. Именно поэтому я не стал повторятся и писать столько же и о том же :)
Посмотрите этот блог, походите по ссылкам приведенным в этой статье. Тут очень много материала, который позволит превратить Вам Vim в мощную среду, и даст мотивацию периодически изучать чтото новое в нем. Я работал на Zend Studio, но критерием стала не скорость зенда, а скорость работы в Zend. Плюс чтобы редактировать файлы на разных языках программирования, одного Zend Studio мало., а мне раньше часто приходилось работать с XSLT, а его поддержки в ZDE нету. Вот и решил попробовать VIm. Попробовал, понравилось, уже несколько месяцев на нем :)
Тех кого не устраивает быстродействие Eclipse PDT — просто отключайте Compiz, т.к. прокрутка тормозит именно из-за него ;-)
Кстати у меня тоже 3 гига памяти на ноуте, но занято вместе с Eclipse PDT максимум 1400 магабайт (ОС — FC10, Turion X2 1.6 GHz). Что я делаю не так?
полезно, спасибо :) Попробую у себя тоже :)
А почему не ctags? Ведь всё намного проще и не надо никакого плагина.
Просто найдя вызов функции в коде, и перейдя по нему на ее объявление разве не удобней?
Так ctags именно это и делает. И не только. Не очень понимаю почему вы пошли по длинному пути.

cscope мощнее, да, но:
1) ненамного
2) он только для языка Си
3) вы мощью этой не пользуетесь, а используете самое простое — переход по «ссылке»
4) требует дополнительной настройки (плагин)
Конечно же я говорю про встроенную связку vim и ctags, а не просто ctags.
mkevac — как минимум во 2 пункте есть неточности, потому как я успешно применил его возможности для своих python и php проектов, а на официальном сайте cscope примеры просто кишат паттерном *.java.
А с остальным конечно я учту и покручу как то на досуге ctags(обещаю), просто так вышло что cscope ранше мне в руки попал — ничего предвзятого по отношению к ctags не чувствую.
Виноват. Поддерживает ещё несколько. Тем не менее несравненно меньше, чем ctags. Просто факт, я ни в коей мере не ругаю cscope.

А там ничего и делать не надо…

$ cd project/
$ ctags -R
$ gvim src/main.c

А в gvim-е просто Ctrl-] (или g] — есть некоторые отличия) для перехода и Ctrl-T для возврата. Более подробно в help-е vim-а.

Повторю. Я не ругаю cscope и не хвалю ctags. Просто странно было что вы начали настраивать сначала cscope, когда vim по умолчанию и без лишних телодвижений работает с ctags.
mkevac, как с помощью ctags из места объявления функции:
class A
{
void f();
}

перейти к вызову этой функции, например
for (i=0;i<20;++i)
{
f();
}


По-моему, никак.
Никак. Автору это и не требовалось, насколько я понял. Требовалось перейти от вызова к определению.
Истину глаголишь — не требовалось. Не ссоримся и читаем UPDate(хотя и так все уже в каментах)
mkevac спасибо!
Оу. А ведь верно. Прошу прощения. (: Для меня эта возможность была определяющей, вот и подумал, что автору не хватало того же.
как я понял почитав текст плагина cscope_mappings.vim — это только маппинг, а сама cscope встроена в vim так же как и tags :)
ctags прекрасный продукт. Особенно в связке с VIM.
Я ещё могу посоветовать kscope, Мы его используем наряду с vim.
А Komodo IDE пробовали?
Да. Когда на Ubuntu еще работал. И именно что пробовал :) так в свободную минутку и Edit. Но поскольку меня в eclipse было все выносимо еще(то была Europe, а не Ganymede), то я как бы не дергался особо — так покликал по менюхе, понабирал кодец — чесно скажу не зацепило… один из множества, как мне тогда показалось :)
и у ctags и у cscope есть одна фича:
если файл с определением функции изменился, то все тэги надо переиндексировать, ибо позиции строк уже съехали.
поэтому на сохранение буфера надо ещё прикрутить autocmd с вызовом cscope для этого файла.
Даа..)) Читаешь комменты к статьям про Vim и поражаешься его возможностям настройки, расширения, гибкости))
au на сохранение буфера идея классная, но на большом проекте любое сохранение будет в таком случае неприятным напрягом :)
я сделал немного иначе

fu! RebuildPhpTags()
let out = system(«rm -rf ./cscope.out && find. -name '*.php' > ./cscope.files && cscope -b && rm -rf ./cscope.files»)
cs reset
endf
nmap <Leader>rh :call RebuildPhpTags()для небольших проектов можно и по сохранению

au BuffWritePost *.php :call RebuildPhpTags()

решение спешное, можно и по расширению текущего файла (expand("%:e")) выбирать в find файлы соответствующие. А можно вообще давать на вход cscope все файлы (*) и не парится :)
только нафигаж cscope.out прибивать?

On a subsequent invocation, cscope rebuilds the cross-reference only if a source file has changed or the list of source files is different. When the cross-reference is rebuilt, the data for the unchanged files are copied from the old
cross-reference, which makes rebuilding faster than the initial build.
не надо? оу! да уж точно :) спс. исправлю :)
я сделал тоже самое но для ctags :)

файл ~/.vim/plugin/my_project.vim:
" объявим переменные, чтобы можно было их переназначать для проекта
let g:my_project_dir = '/var/www/project/'
" файл тага в папке с проектом, и называется tags
let g:my_project_tagfile = g:my_project_dir . "tags"

function ReloadProjectTags()
exec "!ctags -Ro " . g:my_project_tagfile . " " . g:my_project_dir
endfunction

" чтобы еще делать в командном режиме принудительно
command ReloadProjectTags :call ReloadProjectTags()


и в vimrc:
if has("autocmd")
autocmd BufWrite *.php call ReloadProjectTags()
endif
ctags тоже при изменении файла надо переиндексировать

А можете подсказать, как сделать автоматическое закрытие html тэгов?
Посмотрите пожалуйста эту статью. Там есть ссылка на плагин в соответствующем разделе про поддержку XSL, XSLT, XML, XHTML.

Если лень читать все, то вот ссылка сразу на плагин — www.vim.org/scripts/script.php?script_id=1397
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории