ctags - VIM 中多个项目的标签路径

标签 ctags vim exuberant-ctags

我最近开始在我的项目中使用 ctags。我目前有以下设置:

root/tags [contains all non-static tags]
root/foo/tags [contains static tags for the foo directory]
root/bar/tags [static]
root/something/else/tags [etc.]
...

我可以 set tags=./tags,tags,/path/to/root/tags一切正常。

但是,我的问题是我同时处理多个项目,例如,我有 /path/to/root1 , /path/to/root2 , 和 /path/to/root3一次全部。我不想每次打开文件时都手动设置标签;有什么办法可以给 /path/to/rootX 加上标签吗?基于我正在编辑的文件? (即,如果我正在编辑 /path/to/root3/foo/x.c ,请使用 root3/tags 中的标签?

就我而言,我所有的项目都共享一个共同的父目录;我真正想要的是这样的:
set tags=./tags,tags,substitute("%:p:h", "\(^\/path\/to\/.*/\).*$", "\1", "")

但我似乎无法获得正确的 vimfu 使其工作。

编辑:我刚刚意识到这行不通;我实际上无法写信给 root* .相反,我想将我的主要 ctags 文件存储在 ~/ctags/root*/tags 中。 ,其中 ~/ctags/ 的子目录之间存在 1:1 映射和 /path/to/ [对于那些可能想知道的人,这些是 ClearCase UCM 动态 View ;都不是 /view/XXX/也不是 /view/XXX/vobs/可写]

最佳答案

如果你想要的是:

set tags=./tags,tags,substitute("%:p:h", "\(^\/path\/to\/.*/\).*$", "\1", "")

尝试:
let &tags = './tags,tags,' . substitute(expand("%:p:h"), "\(^\/path\/to\/.*/\).*$", "\1", "")
:set 中没有扩展命令。此外,"%:p:h"不会自动展开,所以使用 expand() .看:
:help :let-option
:help expand()

关于ctags - VIM 中多个项目的标签路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3870489/

相关文章:

go - golang如何使用ctags?

c++ - vim ctag 导致 fun 的错误定义

java - 在 Windows 上将 Ctags 与 Gvim 结合使用

vim - 按下 Enter 时如何阻止 Vim 自动插入注释引导符?

Vim 未在启动时设置 `tex` 文件类型

vim - 为什么 Vim 在编辑目录时会创建一个名为 "~"的空目录?

ctags 多行 C 函数原型(prototype)

macos - 通用 ctags YAML 支持