vim 标签 - 符号链接



我有一个项目如下:

/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文件,以及dir1dir2

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 中一样。

最新更新