我有一个与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
问候
我在我的.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
变量设置为指向这些标记,并将它们加载到所有缓冲区中.