VIM ustawił ctags.vimrc

Moje projekty znajdują się w folderze/srv/http / dev. Wygenerowałem plik ctags dla jednego projektu:

$ ctags -R --languages=php .

Teraz ustawiam ścieżkę ctags:

:set tags=/srv/http/dev/proj/tags
I działa dobrze.

Ale mam wiele projektów w Dev / folderze. Jak Mogę ustawić ctags .plik vimrc? Nie działa prawidłowo.

I chciałbym wygenerować plik tagów, naciskając hotkey na wybranym folderze NERDTree. Próbowałem:

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

Ale tworzy plik z tagami w folderze home i wyświetla ostrzeżenia o skanowaniu home folder..

EDIT: Jak radził @ Alexandru Plugaru powinienem użyć g: NERDTreeFileNode.Funkcja GetSelected ().

Jestem tylko newbie vim user, więc mam jeszcze jedno pytanie. Dodałem w moim .plik vimrc:

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

Ale wciskając F4 widzę:

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

EDIT 2: Dzięki @ Alexandru Plugaru mam to:

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>
I to działa! Naciskając F4 otrzymuję plik tagów w folderze projektu.
 15
Author: Dmitry Teplyakov, 2011-11-27

3 answers

Dzieje się tak dlatego, że bieżący katalog Vima jest katalogiem domowym. Musisz zmienić ścieżkę lub utworzyć wtyczkę nerdtree. Zobacz Katalog nerdtree_plugin dla przykładu. Myślę, że ta funkcja będzie dla Ciebie interesująca:

g:NERDTreeFileNode.GetSelected()

 3
Author: Alex Plugaru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-27 11:48:27
  1. Funkcje powinny zaczynać się od dużej litery. Zmień createTags na CreateTags.

  2. Aby użyć plików specyficznych dla projektu, musisz dodać coś takiego do swojego .vimrc:

    set tags=./tags,tags;
    

    Tak, że Vim najpierw szuka pliku tags w bieżącym katalogu, aż go znajdzie. Dodatkowo lubię set autochdir: katalog roboczy jest zawsze tym, który zawiera bieżący plik.

 29
Author: romainl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-27 13:32:36

W Twoim .użycie vimrc:

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

Uważam, że przecinek jest właściwym separatorem.

 -1
Author: Ahmed Masud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-27 11:42:56