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

时间:2012-10-16 19:06:26

标签: vim ctags

我有一个与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

工作

此致

2 个答案:

答案 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插件。它可以选择基于文件类型。