我从事多个项目,每个项目约有 3-500 万行代码。我在每个项目的根目录下都有一个标签文件。我还有一个在他们之间共享的工具目录。
disk1
|
+--Proj A
|
+--Proj B
|
+--Shared
disk2
|
+--Proj C
|
+--Proj D
使用标签时,我希望 Vim 首先搜索项目根目录下的标签文件,然后在标签文件中搜索 Proj X
,然后搜索Shared
中的tags文件
我无法让 Vim 在 Shared
中找到标签文件
在我的 .vimrc 文件中,我有:
设置标签=tags;D:/共享
set tags=tags;,D:/Shared
(感谢 romainl 发现了丢失的逗号!)
但 Vim 只搜索本地项目标签文件,而不搜索共享项目标签文件。
tags;
应从 CWD 开始,向上遍历树,直到找到标记文件(在项目级别找到正确的标记文件)。
D:/Shared
是一个显式路径,应该在该目录中找到标签文件,但未能这样做(我已经检查过,它确实存在)。
我正在使用 Exuberand Ctags v5.8
最佳答案
set tags=tags;D:/Shared
表示“从当前目录向上查找tags
文件,直到到达D:/Shared
”。
如果您在磁盘 2 上的项目 C 中工作(我们称该磁盘为 E:
),Vim 将永远访问 D:/Shared
。因为两件事:
向上搜索不是递归的。
如果没有
tags
如果在“当前目录”的根目录中找到文件,Vim 会尝试在其父目录的根目录中查找文件,依此类推,直到到达最顶层的父目录或分号后指定的目录。所以,假设您正在编辑E:\ProjectC\path\to\some\file
,你不能指望 Vim 找到tags
该路径之外的文件。 Vim 将搜索以下tags
文件,按顺序,顺便说一句,从未找到假设的D:\Shared
:E:\ProjectC\path\to\some\tags <-- KO E:\ProjectC\path\to\tags <-- KO E:\ProjectC\path\tags <-- KO E:\ProjectC\tags <-- OK! E:\tags <-- KO
找不到任何
tags
上面未列出的文件。Windows 无论如何都没有相当于 UNIX 的“根”目录。
当您不指定停止目录时,向上搜索将从当前目录(或任意起始目录)爬升文件系统的倒置树到文件系统的根目录。
假设您仍在编辑
E:\ProjectC\path\to\some\file
,向上搜索最终会寻找停止目录D:\Shared
直接位于E:\
路径中的每个父目录下显然永远找不到它。
如果你想让 Vim 找到 D:\Shared\tags
无论您身在何处,只需将其显式添加到 tags
选项。不是作为停止目录,而是作为特定位置:
set tags=tags;,D:/Shared/tags
现在,它说“从当前目录向上查找tags
文件并使用D:/Shared/tags
”。
嗯……说了很多话只是为了解释对单个 ,
的需求。 .
关于windows - vim 设置标签为绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560860/