VIM установил ctags в .vimrc

У меня есть мои проекты в папке /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>

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

EDIT: Как посоветовал @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

EDIT 2: Благодаря @Alexandru Plugaru я получил вот это:

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, я получаю файл тегов в папке проекта.

20
задан Dmitry Teplyakov 27 November 2011 в 13:55
поделиться