我在多个项目上工作,每个〜3-5百万行代码。我在每个项目的根目录下都有一个标签文件。我还有一个在所有这些工具之间共享的工具目录。
disk1
|
+--Proj A
|
+--Proj B
|
+--Shared
disk2
|
+--Proj C
|
+--Proj D
使用标签时,我希望Vim首先搜索项目根目录下的标签文件,然后在标签文件中搜索Proj X
,然后在Shared
<中搜索标签文件/ p>
我无法让Vim在Shared
在我的.vimrc文件中我有:
set tags = tags; D:/ Shared
set tags=tags;,D:/Shared
(感谢romainl删除逗号!)
但是Vim只搜索本地项目标签文件,而不是共享文件。
tags;
应该从CWD开始并遍历树,直到找到一个标签文件(在项目级别找到正确的文件)。
D:/Shared
是一个显式路径,应该在该目录中找到标签文件但是没有这样做(我已经检查过,它确实存在)。
我正在使用Exuberand Ctags v5.8
答案 0 :(得分:1)
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“root”目录。
如果未指定停止目录,则向上搜索会将文件系统的倒置树从当前目录(或任意启动目录)爬到文件系统的根目录。
假设您仍在编辑E:\ProjectC\path\to\some\file
,向上搜索最终将直接在{/ 1>} {/ 1}}的路径中的每个父目录下查找停止目录D:\Shared
显然永远不会找到它。
如果您希望Vim在任何地方找到E:\
,您只需要明确地将其添加到D:\Shared\tags
选项中。不是停止目录,而是作为特定位置:
tags
现在,它说“向上查看当前目录中的set tags=tags;,D:/Shared/tags
文件和使用tags
”。
嗯......这只是为了解释单个D:/Shared/tags
的必要性。