我希望能够在我的项目中的任意子目录中启动vim,并让它搜索tags文件的项目根目录,然后搜索项目树外部的不相关目录.
例如,假设我有以下内容:
~/projects/foo/bar/baz.c
~/projects/foo/tags
~/some/arbitrary/path/tags
Run Code Online (Sandbox Code Playgroud)
我想baz.c从bar子目录中打开,让它搜索到找到foo/tags然后搜索some/arbitrary/path/tags是否找不到符号foo/tags.
现在我知道我能做到:
set tags=./tags,tags;
Run Code Online (Sandbox Code Playgroud)
完成第一项任务.它显然是分号,告诉vim搜索根.但是,以下两项工作都不是:
set tags=./tags,tags,~/some/arbitrary/path/tags;
set tags=./tags,tags;~/some/arbitrary/path/tags
Run Code Online (Sandbox Code Playgroud)
第一个只找到符号,~/some/arbitrary/path/tags而第二个只在项目根目录的tags文件中找到符号.
有人知道怎么做吗?我在Linux上买路.
我用:
set tags=~/.tags
set tags+=~/.vim/tags/cpp
set tags+=~/src/git/gitsrc/tags
" and so on...
Run Code Online (Sandbox Code Playgroud)
用于在特定项目的根中生成标记:
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
Run Code Online (Sandbox Code Playgroud)
我从C++代码完成vim提示改编了这个设置.