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

Vim CTAG-仅显示相关或上下文标记,vim,ctags,Vim,Ctags,我有一个与Vim一起工作的Ctags设置。 我当前的设置如下: set tags=./tags;/ set tags+=~/.ctags/*/tags 它基本上在当前目录中查找标签文件,直到/,并且在~/.ctags目录中查找标签,在那里我为不同目录中的不同项目排序了标签 现在,除以下情况外,一切正常: -我有两个标记文件定义为:~/.ctags/ruby/tags和~/.ctags/php/tags -我在一个PHP项目中工作,CTRL+]将我带到一个Ruby项目的标记处(由于上面定义的第二

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

set tags=./tags;/
set tags+=~/.ctags/*/tags
它基本上在当前目录中查找
标签
文件,直到
/
,并且在
~/.ctags
目录中查找
标签
,在那里我为不同目录中的不同项目排序了
标签

现在,除以下情况外,一切正常: -我有两个标记文件定义为:
~/.ctags/ruby/tags
~/.ctags/php/tags
-我在一个PHP项目中工作,
CTRL+]
将我带到一个Ruby项目的标记处(由于上面定义的第二条规则)-当我期望它在
~/.ctags/PHP/tags
中搜索相关标记时-它在
~/.ctags/Ruby/tags
中找到了匹配项-因此,行为也发生了变化

所以,当我在php中工作时,我能让Vim只在
~/.ctags/php/tags
中查找吗?当我在ruby中工作时,只在
~/.ctags/ruby/tags
中查找吗?当我在
xxxx
中工作时,让我说一下
~/.ctags/xxxx/tags


考虑到我在
文件中执行此操作的方式。vimrc
文件是通过设置本地
标记
变量:

augroup TagFileType
    autocmd!
    autocmd FileType * setl tags<
    autocmd FileType * exe 'setl tags+=~/.ctags/' . &filetype . '/tags'
augroup END
augroup标记文件类型
自动驾驶!
autocmd文件类型*setl标记<
autocmd FileType*exe'setl tags+=~/.ctags/'&文件类型。”/标签'
螺旋端

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

Daan的解决方案看起来不错


您可能想看看自动生成标签的插件。它可以选择基于文件类型。

的确,Vim不区分不同语言的标记。但这只是问题的一部分。它也不像任何像样的IDE那样,使用上下文来找出同一语言中的相关标记。不知道为什么没有插件可以做到这一点。。。