3

我有一个项目如下:

/dir 
   dir1
   dir2 -> symbolic-link to /otherdir
       file1
   tags *
  • 我希望 vim 使用这个标签文件,其中包含 dir1 和 dir2 中文件的标签。当我编辑 file1 时,VIM 找不到正确的标签文件。

我在 .vimrc 中有以下设置:

set tags=tags;/

有没有办法在不明确告诉 VIM标签的绝对路径的情况下保持这个文件结构?

4

3 回答 3

2

您可以将其他标签附加到相同的 ctags 中,例如,如果您想 ctag dir1 中的所有内容,您将执行:

ctags -R *

如果您想从目录二添加一些其他标签:

ctags -R -a ~/path/to/dir2/*

-a 用于追加。

现在,无论我在哪里打开我的 vim,为了始终拥有我的 ctags,我所做的就是在我的.vimrc:

set tags+=./tags;$HOME

这将在当前目录中查找标签,并将递归到您的主文件夹,如果您希望它搜索到根文件夹或更少,只需$HOME更改//path/to/root/project/

于 2012-06-28T18:41:59.907 回答
1

在我的这一行以及与~/.vimrc您的布局相似的情况下,tags相关功能(:ts<C-]>等)使用tags位于 、 和 根部dir的相同文件。dir1dir2

set tags=./tags,tags;$HOME

tags文件首先在当前文件的目录中搜索,然后在cwd, 然后向上直到到达$HOME.

:echo tagfiles()编辑时说什么file1?这里说['/home/romainl/Desktop/dir0/tags']

编辑

抛出一个符号链接似乎并没有改变任何东西。

结束编辑

于 2012-06-28T19:26:05.970 回答
0

我认为这只是在正确的目录中的问题。当你开始在这个项目中工作时,使用:cd /dir进入带有标签文件的目录,并确保该autochdir选项已关闭。然后当你在 dir2 中编辑一个文件时,工作目录仍然是 dir,它仍然会找到相同的标签文件。

另一方面,如果你最终将 dir/dir2 作为你的工作目录,那实际上意味着你在 /otherdir,所以当 Vim 从那里查找标签文件时,它在那个目录中找不到它或在 / 中。我怀疑这就是你现在正在发生的事情。

您可以随时使用该:pwd命令查看您所在的目录,就像在 shell 中一样。

于 2012-06-28T17:34:21.673 回答