是否可以将特定的标记文件添加到 vim 中的特定 windows/buffers?
Is it possible to add specific tag files to particular windows/buffers in vim?
可以检测 当前文件 在 vim 中打开的路径中的关键字并 添加特定的 tag
文件?
我的项目主要组织在 src
、test
和 external
块中,但这些块中的每一个都出现在路径中的任何位置,不一定在开头或结尾(否则 this 解决方案可能有效)。也就是说,我的项目有这样的结构:
feature1/src
feature1/test
feature2/src
feature2/test
external/feature3
我可以为每个 src
、test
和 external
块生成一个单独的 tag
文件,然后在 [=47= 中的路径中检测这三个关键字] 与 match(expand('%:p:h'), ...)
.
但是,如果我在任何包含 src
的路径上,我如何 仅 加载 src
标记,等等 test
和external
?命令 set tags+=...
为所有 windows (缓冲区)添加它们,混合它们会导致许多名称冲突。
提前致谢
种类
augroup example | au!
autocmd BufRead,BufNewFile */myproject/*
\ let &l:tags = &g:tags . ',' . TagForFile(expand("<amatch>"))
augroup end
编写函数 TagForFile()
由您来完成。
Vim 已经通过正确设置的 &tags
选项处理了这种情况:
set tags=./tags;
上面的值告诉 Vim 查找 tags
文件:
- 在当前文件目录下,有
./tags
,
- 递归地,直到文件系统的根目录,使用
;
(请参阅 :help 'tags'
了解限制)。
在这种情况下……
使用上述值并在编辑 feature1/src/dir/file.c
时,Vim 将按顺序在以下位置查找 tags
文件:
feature1/src/dir/tags
feature1/src/tags
feature1/tags
...
使用上述值并在编辑 external/feature3/file.c
时,Vim 将按顺序在以下位置查找 tags
文件:
external/feature3/tags
external/tags
...
可以检测 当前文件 在 vim 中打开的路径中的关键字并 添加特定的 tag
文件?
我的项目主要组织在 src
、test
和 external
块中,但这些块中的每一个都出现在路径中的任何位置,不一定在开头或结尾(否则 this 解决方案可能有效)。也就是说,我的项目有这样的结构:
feature1/src
feature1/test
feature2/src
feature2/test
external/feature3
我可以为每个 src
、test
和 external
块生成一个单独的 tag
文件,然后在 [=47= 中的路径中检测这三个关键字] 与 match(expand('%:p:h'), ...)
.
但是,如果我在任何包含 src
的路径上,我如何 仅 加载 src
标记,等等 test
和external
?命令 set tags+=...
为所有 windows (缓冲区)添加它们,混合它们会导致许多名称冲突。
提前致谢
种类
augroup example | au!
autocmd BufRead,BufNewFile */myproject/*
\ let &l:tags = &g:tags . ',' . TagForFile(expand("<amatch>"))
augroup end
编写函数 TagForFile()
由您来完成。
Vim 已经通过正确设置的 &tags
选项处理了这种情况:
set tags=./tags;
上面的值告诉 Vim 查找 tags
文件:
- 在当前文件目录下,有
./tags
, - 递归地,直到文件系统的根目录,使用
;
(请参阅:help 'tags'
了解限制)。
在这种情况下……
使用上述值并在编辑
feature1/src/dir/file.c
时,Vim 将按顺序在以下位置查找tags
文件:feature1/src/dir/tags feature1/src/tags feature1/tags ...
使用上述值并在编辑
external/feature3/file.c
时,Vim 将按顺序在以下位置查找tags
文件:external/feature3/tags external/tags ...