Ctags - 仅显示相关或上下文标记

Sto*_*oic 3 vim ctags

我有一个与Vim一起工作的Ctags设置.
我目前的设置如下:

set tags=./tags;/
set tags+=~/.ctags/*/tags
Run Code Online (Sandbox Code Playgroud)

它基本上tags在当前目录中查找文件,直到/查找tags内部~/.ctags目录,我在其中tags为不同目录中的不同项目排序.

现在,一切都工作正常,除非: - 我有两个标签文件定义为:~/.ctags/ruby/tags~/.ctags/php/tags - 我正在一个PHP项目中工作并CTRL+]带我到一个Ruby项目的标签(由于上面定义的第二个规则) - 当我期望它在里面搜索一个相关的标签~/.ctags/php/tags- 而不是在里面找到一个匹配~/.ctags/ruby/tags- 因此,行为.

所以,我可以让Vim ~/.ctags/php/tags在我使用PHP工作时只查看内部,只~/.ctags/ruby/tags在我在ruby工作时查找,并且可以说~/.ctags/xxxx/tags当我在工作时xxxx

问候

Daa*_*ker 6

我在我的.vimrc文件中完成它的方法是设置一个局部tags变量:

augroup TagFileType
    autocmd!
    autocmd FileType * setl tags<
    autocmd FileType * exe 'setl tags+=~/.ctags/' . &filetype . '/tags'
augroup END
Run Code Online (Sandbox Code Playgroud)

这样做:无论何时打开文件,它都会将全局tags变量的当前内容复制到本地tags变量,然后添加~/.ctags/[filetype]/tags到该变量中.这意味着在php缓冲区中只会~/.ctags/php/tags被搜索,并且在ruby缓冲区中~/.ctags/ruby/tags.如果要在所有缓冲区中搜索任何标记,可以将全局tags变量设置为指向这些标记,并将它们加载到所有缓冲区中.