I have my projects in /srv/http/dev folder. I generated ctags file for one project:
$ ctags -R --languages=php .
Now I set ctags path:
:set tags=/srv/http/dev/proj/tags
And it's working fine.
But I have many projects in dev/ folder. How can I set ctags in .vimrc file? set tags=tags
not working properly.
And I would like to generate tags file by pressing hotkey on selected NERDTree folder. I tried:
nmap <silent> <F4> \ :!ctags -R \ --languages=php .<CR>
But it creates tags file in home folder and shows warnings about scanning home folder..
EDIT: As @Alexandru Plugaru advised I should use g:NERDTreeFileNode.GetSelected() function.
I am just newbie vim user, so I have one more question. I have added in my .vimrc file:
function createTags() let curNodePath = g:NERDTreeFileNode.GetSelected().path.str exec ':!ctags -R --languages=php ' . curNodePath endfunction nmap <silent> <F4> :execute createTags()<CR>
But by pressing on F4 I see:
E117: Unknown function: createTags E15: Invalid expression: createTags
EDIT 2: Thanks to @Alexandru Plugaru I got this:
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>
And it works! By pressing F4 I get tags file in project folder.
Functions are supposed to start with a capital letter. Change createTags
to CreateTags
.
To use project-specific tags
files you will need to add something like that to your .vimrc
:
set tags=./tags,tags;
so that Vim looks for a tags
file in the current directory first and up and up until it finds it. Additionnaly, I like to set autochdir
: the working directory is always the one containing the current file.
That is because the current directory of vim is the home directory. You either need to change the path or create nerdtree plugin. See nerdtree_plugin directory for an example. I think that you'll find this function interesting:
g:NERDTreeFileNode.GetSelected()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With