我刚刚ctags通过自制软件安装并在我的~/.vimrc.
set tags=./tags,tags;$HOME
Run Code Online (Sandbox Code Playgroud)
然后我运行/usr/local/bin/ctags -R .了我的一些目录并打开了存储在目录中的一些文件,然后其中一些脚本成功导入了标签文件,但其他脚本没有。
例如,我打开了test.py我的 Python 工作区,我已经在其中运行了上面的命令,然后我尝试装Ctrl+]上我的 GVim,它看起来像成功导入了标签文件。
我还打开了hello.go位于~/go/src/github.com/user/hello,其中我已经执行了上述ctags命令,成功导入了标签文件。但是,我test.rb为了测试目的而放在 Go 目录中的文件没有正确导入标签文件。
另外,当我在ctags上执行命令~/another_go_workspace/src,然后打开位于 中的文件时~/another_go_workspace/src/hello/hello.go,该文件没有导入标签文件...但是,由于我附加set tags=./tags,tags;$HOME在我的 上~/.vimrc,它不会自动查找更高的目录,对吗?
那么我错过了什么?
如果它没有在更高的目录中导入标签文件,我是否必须ctag在每个目录上执行命令,即 on ~/go/src/soccer_analysis, ~/go/src/coffee, ~/go/src/utility, etc, etc...?
谢谢。
您对该tags选项的价值是正确的,您对其行为的假设也是正确的。
使用您的设置,set tags=./tags,tags;$HOMEVim 将tags首先在当前文件的目录中搜索文件,然后tags从工作目录向上搜索文件$HOME。
这允许您tags在项目的根目录下生成一个文件,并确保 Vim 将在您的项目中的任何位置以及工作目录中的任何位置提取它。
使用以下结构和您当前的设置:
project/
bar/
bar.js
foo/
foo.js
project.js
tags
Run Code Online (Sandbox Code Playgroud)
Vim 应该可以tags在以下所有场景及其变体中找到:
$ vim project.js
$ cd foo && vim foo.js
$ cd bar && vim bar.js
$ vim foo/foo.js
$ vim bar/bar.js
$ cd bar && vim bar.js ../project.js
Run Code Online (Sandbox Code Playgroud)
每次向项目添加新文件或写入现有文件时,都必须重新索引整个项目。从你写的关于 ruby 文件的内容来看,你在添加文件后似乎没有运行 ctags 。试试这个以选择项目中的文件::echo tagfiles().