我的项目如下:
/dir
dir1
dir2 -> symbolic-link to /otherdir
file1
tags *
我在.vimrc中有以下设置:
set tags=tags;/
有没有办法保留这个文件结构而不明确地告诉VIM 标签的绝对路径?
答案 0 :(得分:2)
你可以将相同的ctags附加到其他标签上,例如,如果你想在dir1中找到所有内容,你就可以执行:
ctags -R *
如果你想从dir二中添加一些其他标签:
ctags -R -a ~/path/to/dir2/*
-a用于追加。
现在无论我在哪里打开我的vim,我总是拥有自己的ctags,就是在.vimrc
中添加这一行:
set tags+=./tags;$HOME
这将在当前目录中查找标签,并且会递归到您的主文件夹,如果您希望它搜索到根文件夹或更少,只需更改$HOME
/
或{ {1}}
答案 1 :(得分:1)
在我的~/.vimrc
中使用此行并使用与您类似的布局,tags
相关功能(:ts
,<C-]>
等)使用相同的{{1} }文件位于tags
的根目录,旁边是dir
和dir1
。
dir2
set tags=./tags,tags;$HOME
文件首先在当前文件的目录中搜索,然后在tags
中搜索,然后向上搜索,直到达到cwd
。
编辑$HOME
时:echo tagfiles()
说了什么?这里写着file1
。
修改强> 的
抛出符号链接似乎没有任何改变。
的 EndEdit中强> 的
答案 2 :(得分:0)
我认为这只是一个存在于正确目录中的问题。当您开始使用此项目时,请使用:cd /dir
进入包含标记文件的目录,并确保已关闭autochdir
选项。然后当您在dir2中编辑文件时,工作目录仍然是dir,它仍然会找到相同的标签文件。
另一方面,如果你最终将dir / dir2作为你的工作目录,这实际上意味着你在/ otherdir,所以当Vim从那里查找标签文件时,它找不到它在该目录中或在/。我怀疑现在正在发生什么事。
您可以使用:pwd
命令随时查看您所在的目录,就像在shell中一样。