vim - VIM在.vimrc中设置ctags

标签 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,我将在项目文件夹中获取标签文件。

最佳答案

这是因为vim的当前目录是主目录。您需要更改路径或创建nerdtree插件。有关示例,请参见nerdtree_plugin目录。我认为您会发现此功能很有趣:
g:NERDTreeFileNode.GetSelected()

关于vim - VIM在.vimrc中设置ctags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8285232/

相关文章:

vim 用更多文本替换表达式

c++ - 用 C++ 解析 Exuberant Ctags

vim - 为什么不能在 ctags 命令中使用排除参数排除文件?

c++ - 我可以使用 Ctags 仅从 C++ 文件中获取#includes 吗?

将 vim ctags <C-]> 和 <C-T> 键映射复制到 <C-Q> 和 <C-A>

perl - ctags 对 moops 的支持

html - 我如何设置 vim 7's html tidy options for "utf-8"编码?

vim - 为什么 Vim 在这个重新映射的键上延迟?我该如何解决?

vim - 操作拆分时忽略 NerdTree 缓冲区

vim - 一键重复上次搜索?