VIM установить ctags в .vimrc - PullRequest
18 голосов
/ 27 ноября 2011

Мои проекты находятся в папке / srv / http / dev.Я создал файл ctags для одного проекта:

$ ctags -R --languages=php .

Теперь я установил путь ctags:

:set tags=/srv/http/dev/proj/tags

И он работает нормально.

Но у меня много проектов в dev/ папка.Как я могу установить ctags в файле .vimrc?set tags=tags не работает должным образом.

И я хотел бы создать файл тегов, нажав горячую клавишу в выбранной папке NERDTree.Я попытался:

nmap <silent> <F4>
    \ :!ctags -R
    \ --languages=php .<CR>

Но он создает файл тегов в домашней папке и показывает предупреждения о сканировании домашней папки ..

РЕДАКТИРОВАТЬ: Как @Alexandru Plugaru посоветовал мнеиспользуйте функцию g: NERDTreeFileNode.GetSelected ().

Я просто новичок в vim, поэтому у меня есть еще один вопрос.Я добавил в свой файл .vimrc:

function createTags()
    let curNodePath = g:NERDTreeFileNode.GetSelected().path.str
    exec ':!ctags -R --languages=php ' . curNodePath
endfunction
nmap <silent> <F4> :execute createTags()<CR>

Но, нажав на F4, я вижу:

E117: Unknown function: createTags
E15: Invalid expression: createTags

РЕДАКТИРОВАТЬ 2: Благодаря @Alexandru Plugaru Iполучил это:

function CreateTags()
    let curNodePath = g:NERDTreeFileNode.GetSelected().path.str()
    exec ':!ctags -R --languages=php -f ' . curNodePath . '/tags ' . curNodePath
endfunction
nmap <silent> <F4> :call CreateTags()<CR>

И это работает!При нажатии F4 я получаю файл тегов в папке проекта.

Ответы [ 3 ]

33 голосов
/ 27 ноября 2011
  1. Функции должны начинаться с заглавной буквы.Измените createTags на CreateTags.

  2. Чтобы использовать файлы tags, относящиеся к конкретному проекту, вам нужно добавить что-то подобное в .vimrc:

    set tags=./tags,tags;
    

    , чтобы Vim сначала искал файл tags в текущем каталоге, вверх и вверх, пока не найдет его.Кроме того, мне нравится set autochdir: рабочий каталог всегда содержит текущий файл.

4 голосов
/ 27 ноября 2011

Это потому, что текущий каталог vim является домашним каталогом.Вам нужно либо изменить путь, либо создать плагин nerdtree.Смотрите каталог nerdtree_plugin для примера.Я думаю, что вы найдете эту функцию интересной:

g:NERDTreeFileNode.GetSelected()

0 голосов
/ 27 ноября 2011

в вашем .vimrc:

 set tags+=tags,/srv/http/dev/proj/tags

Я считаю, что запятая - это правильный разделитель.

...