Pull to refresh

Как vim затмение победил(ходим по функциям как в eclipse)

Reading time 2 min
Views 13K
Все началось с того что eclipse+pdt стал много съедать моего рабочего времени доедая последние метры двугектарной оперативы моего ноута. Знай вы, уважаемые хабралюди, к этому моменту про какой ноут идет речь, вам бы так же показался мой выбор очевидным. Но к моему разочарованию TextMate оказался не стоящим тех полсотни баксов, которые за него просят. Не судите строго! Один из основных критериев для меня была возможность бегать от вызовов к объявлениям функций… в нашем проекте это очень полезная функция :) Так вот в книге по textmate на это я не нашел ни даже намеков, а ближайший соратник на утро сказал, что textmate это все же редактор, но хватит о textmate — о нем еще немного в конце. А поскольку я все же *nix-оид со стажем — первой бесплатной альтернативой стал ***VIM*** тада!!!


Я поднял свои старые ссылки по vim, пересмотрел свой старый .vimrc написанный год назад по мотивам allaboutvim. Но основной критерий все равно оставался за eclipse :( Но буквально читая мысли Chaos_Code в дни моего активного возвращения к vim пишет замечательную статью о vim. Из статьи я почерпнул много нового :) и в первую очередь вот тут и вот это:
Есть оказывается такая замечательная штука как cscope. Особо в глубь я не копал, поставил вот этот плагин в ~/.vim/plugins и взял ровно вот столько

cd project_dir
find . -name '*.php' > ./cscope.files
cscope -b
rm ./cscope.files

после, как гласит упоминавшееся руководство, надо открыть vim в project_dir и выполнить

:cs add cscope.out

и единственное что мне довелось — добавить это один маппинг в .vimrc прототип для которого я нашел тут:

nmap <c-f> :cs find g <c-r>=expand("<cword>")<cr><cr>


И теперь когда в вашем проекте вы захотите открыть место где определяется та или иная функция/класс — достаточно нажать Ctl+F наведя курсор на имя функции/класса, в лучшем случае вы сразу попадете на строку где искомое определяется :) а в проектах вроде тех, на котором я работаю, выпадет список вариантов…

И это не все :)
Как я и обещал в конце немного о textmate :)
Это тоже, как оказывается, не такой уж и «просто редактор» и конечно же все в нем автоматически создаст Вам cscope.out в папке проекта. Но черт возьми vim это все равно тру софт настоящий unix way editor:) Надеюсь облегчил кому-то жизнь ;)

UPD: И что самое примечательное благодаря mkevac нашлось более простое решение именно моей задачи:
$ cd project/
$ ctags -R

после этого в папке проекта появляется файл tags и наступив на имя функции с помощью сочетания g] можно свободно переходить на место ее объявления. И как и в случае с cscope(о чем я совершенно забыл ранее) вернутся можно используя Ctrl+T

Безусловно cscope мощнее, ибо может не только это, но и переходить на функции вызываемые выбранной и функции вызывающие выбранную и немного больше(введите :cs — там все хорошо описано ;)), но для конкретной фичи, которой не хватало мне в vim использование ctags действительно проще.
И еще ремарочка — родной MacOS-овский ctags не работает так как это описано выше(а в оригинале ниже) — я поставил ctags из MacPorts и все побежало как положено
Tags:
Hubs:
+21
Comments 38
Comments Comments 38

Articles