VIM在.vimrc中设置了ctags

时间:2011-11-27 11:32:07

标签: vim ctags

我在/ srv / http / dev文件夹中有我的项目。我为一个项目生成了ctags文件:

$ ctags -R --languages=php .

现在我设置了ctags路径:

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

它工作正常。

但我在dev /文件夹中有很多项目。如何在.vimrc文件中设置ctags? 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我得到了这个:

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 个答案:

答案 0 :(得分:32)

  1. 函数应该以大写字母开头。将createTags更改为CreateTags

  2. 要使用特定于项目的tags文件,您需要在.vimrc中添加类似的内容:

    set tags=./tags,tags;
    

    以便Vim首先在当前目录中查找tags文件,直到找到它为止。另外,我喜欢set autochdir:工作目录始终是包含当前文件的目录。

答案 1 :(得分:3)

这是因为vim的当前目录是主目录。您需要更改路径或创建nerdtree插件。有关示例,请参阅nerdtree_plugin目录。我认为你会发现这个功能很有趣:

g:NERDTreeFileNode.GetSelected()

答案 2 :(得分:-1)

在.vimrc中使用:

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

我相信逗号是合适的分隔符。