8

我希望能够在我的项目中的任意子目录中启动 vim 并让它搜索到项目根目录中的tags文件,然后在项目树之外的不相关目录中搜索。

例如,假设我有以下内容:

~/projects/foo/bar/baz.c
~/projects/foo/tags
~/some/arbitrary/path/tags

我想baz.cbar子目录中打开,让它搜索查找foo/tags,然后搜索some/arbitrary/path/tags是否在foo/tags.

现在我知道我可以做到:

set tags=./tags,tags;

完成第一个任务。显然是分号告诉 vim 搜索到根目录。但是,以下都不起作用:

set tags=./tags,tags,~/some/arbitrary/path/tags;
set tags=./tags,tags;~/some/arbitrary/path/tags

第一个~/some/arbitrary/path/tags只找到符号,而第二个只在项目根目录的标签文件中找到符号。

有人知道怎么做吗?我在Linux上买的方式。

4

5 回答 5

5

我用:

set tags=~/.tags
set tags+=~/.vim/tags/cpp
set tags+=~/src/git/gitsrc/tags
" and so on...

在特定项目的根目录中生成标签:

map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

我从C++ 代码完成 vim 提示中调整了这个设置。

于 2009-12-01T22:08:49.533 回答
0

用你家的路径替换波浪号。

于 2009-11-17T14:56:04.623 回答
0

您的第一个“设置标签”选项适用于我在 Linux 中。(就像我之前做过的一样,我只是重新创建了它以确保它。)您的标签选项中可以有许多不同的路径,包括绝对路径和相对路径。但是,在第二个中,列表中间有一个分号,这是不正确的。实际上,您不需要任何分号。为了以防万一,我还将 ~ 替换为您家的绝对路径,并一起删除分号。每条路径之间只有逗号。

哦,要搜索标签文件的目录,您需要“../tags”,而不是“./tags”。一个点表示当前目录,两个点表示从您所在位置向上的目录。

于 2009-11-17T15:00:21.670 回答
0

标签文件总是在项目/目录中吗?如果是这样,您无需“向上搜索”即可找到标签文件。只需硬编码两个文件的路径,如下所示:

set tags=/home/you/projects/foo/tags;/home/you/some/arbitrary/path/tags

如果没有,你可以尝试这样的事情:

set tags=/home/you/projects/**;/home/you/projects,/home/you/some/arbitrary/path/tags

我还没有尝试过,所以你可能需要尝试一下。它有一些先决条件才能工作。请参阅 :help 文件搜索。

于 2009-11-20T08:50:49.407 回答
0

设置标签的单行语法应该是:

set tags=./tags,tags;,~/some/arbitrary/path/tags

“tags;”后面缺少逗号。

于 2017-04-12T18:21:25.813 回答