我有一个如下的项目:
/dir
dir1
dir2 -> symbolic-link to /otherdir
file1
tags *
- 我希望vim使用包含dir1和dir2文件标记的THIS标记文件。 当我编辑file1时,VIM找不到正确的标记文件。
我在.vimrc中进行了以下设置:
set tags=tags;/
有没有一种方法可以不明确告诉VIM tags的绝对路径,而保持这个文件结构?
您可以将其他标记附加到相同的ctags上,因此例如,如果您想要在dir1中标记所有内容,则应执行以下操作:
ctags -R *
如果你想从第二个目录中添加其他标签:
ctags -R -a ~/path/to/dir2/*
-a用于追加。
现在,为了让我的ctags无论在哪里打开vim都能使用,我会在我的.vimrc
文件中添加以下代码:
set tags+=./tags;$HOME
这将在当前目录中查找标签,并递归到您的主目录,如果您希望它搜索到根文件夹或更少,只需将 $HOME
更改为 /
或 /path/to/root/project/
在我的~/.vimrc
文件中加入这行代码,并且与你的布局类似,tags
相关功能(:ts
,<C-]>
等)将使用位于dir
根目录下的同一tags
文件,与dir1
和dir2
并列。
set tags=./tags,tags;$HOME
tags
文件首先在当前文件目录中搜索,然后在cwd
中搜索,直到达到$HOME
。
当您编辑file1
时,:echo tagfiles()
会显示什么?这里显示为['/home/romainl/Desktop/dir0/tags']
。
编辑
似乎抛出符号链接并没有改变任何东西。
结束编辑
我认为这只是在正确的目录中。当您开始在该项目中工作时,使用:cd /dir
进入带有标记文件的目录,并确保关闭autochdir
选项。然后,当您编辑dir2内的文件时,工作目录仍将是dir,并且它仍将查找相同的tags文件。
另一方面,如果您最终以dir/dir2作为工作目录,那实际上意味着您在/otherdir中,因此当Vim从那里查找tags文件时,它无法在该目录或/中找到它。我怀疑现在就是这种情况。
您可以随时使用:pwd
命令查看您所在的目录,就像在shell中一样。