我有一个与Vim一起工作的Ctags设置 我目前的设置如下:
set tags=./tags;/
set tags+=~/.ctags/*/tags
它基本上在当前目录中查找tags
文件,直到/
,并在tags
目录中查找~/.ctags
,我在tags
{ {1}}为不同目录中的不同项目排序。
现在,一切正常,除非:
- 我有两个标记文件定义为:~/.ctags/ruby/tags
和~/.ctags/php/tags
- 我正在一个PHP项目中工作,CTRL+]
带我到一个Ruby项目的标签(由于上面定义的第二个规则) - 当我希望它在~/.ctags/php/tags
内搜索相关标签时 - 它在~/.ctags/ruby/tags
内找到匹配 - 因此,行为。
那么,我可以要求Vim仅在我使用PHP工作时在~/.ctags/php/tags
内查找,当我在ruby工作时只查找~/.ctags/ruby/tags
,并且当我使用ruby时可以说~/.ctags/xxxx/tags
我在xxxx
此致
答案 0 :(得分:6)
我在.vimrc
文件中的方式是设置本地tags
变量:
augroup TagFileType
autocmd!
autocmd FileType * setl tags<
autocmd FileType * exe 'setl tags+=~/.ctags/' . &filetype . '/tags'
augroup END
这样做:每当您打开文件时,它会将全局tags
变量的当前内容复制到本地tags
变量,并向其添加~/.ctags/[filetype]/tags
。这意味着在php缓冲区中只搜索~/.ctags/php/tags
,并在ruby缓冲区~/.ctags/ruby/tags
中搜索。如果您想在所有缓冲区中搜索任何标记,可以将全局tags
变量设置为指向这些变量,并将它们加载到所有缓冲区中。
答案 1 :(得分:2)
Daan的解决方案看起来不错。
您可能需要查看自动生成代码的easytags插件。它可以选择基于文件类型。