GVim 中的某些文件没有标签文件,而其他文件则没有

Bla*_*ard 1 tags vim ctags

我刚刚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...?

谢谢。

rom*_*inl 5

您对该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().