我有一个项目如下:
/dir
dir1
dir2 -> symbolic-link to /otherdir
file1
tags *
- 我希望 vim 使用 THIS 标签文件,其中包括 dir1 和 dir2 中文件的标签。当我编辑 file1 时,VIM 找不到正确的标记文件。
我在 .vimrc 中有以下设置:
set tags=tags;/
有没有办法在不明确告诉 VIM 标签的绝对路径的情况下保留此文件结构?
您可以将其他标签附加到相同的 ctags 中,例如,如果您想在 dir1 中标记所有内容,您将执行:
ctags -R *
如果您想从目录二中添加一些其他标签:
ctags -R -a ~/path/to/dir2/*
-a 表示追加。
现在,无论我在哪里打开 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
进入包含 tags 文件的目录,并确保关闭autochdir
选项。然后,当您在 dir2 中编辑文件时,工作目录仍将是 dir,并且它仍将找到相同的标签文件。
如果另一方面,你最终以 dir/dir2 作为你的工作目录,那实际上意味着你在/otherdir 中,所以当 Vim 从那里查找标签文件时,它无法在该目录或/中找到它。我怀疑这就是你现在发生的事情。
您可以随时使用 :pwd
命令查看您所在的目录,就像在 shell 中一样。