如何指定生成标签文件的位置
How to specify where to generate the tags file
我目前有这样一个项目目录
MainProject
|_ProjectA
| |_src
| |_file1.cpp
| |_file2.cpp
| |_.....
| |_tags <---tag file generated here
|_ProjectB
| |_src
| |_file3.cpp
| |_file4.cpp
| |_.....
|_tags <---tag file generated here
现在 file4.cpp 使用 file1.cpp 中的项目,但似乎因为它位于不同的文件夹中,所以我收到消息
cstag - tag not found
目前我进入了我的 ProjectA 和 ProjectB 并为每个都做了这个
ctage -R .
因此在每个项目中生成了哪个标签文件。
我的问题是如何指定生成标签文件的位置。在那种情况下,所有标签文件将彼此相邻,希望这将解决这个问题
我建议使用 gutentags vim 插件来处理您的标记文件生成。 Gutentags 正在通过查找 SCM 文件夹(例如 .git)定位您的项目根目录,并为整个项目生成标签文件。
不需要其他配置,但您可以根据需要指定另一个缓存目录 (g:gutentags_cache_dir)。查看帮助文件以获取更多配置选项 help gutentags
.
最简单的解决方案是生成一个 tags
文件:
$ cd MainProject
$ ctags -R .
并告诉Vim在查找tags
个文件时向上递归:
set tags=./tags;,tags;
没有一种方法可以满足您的需求。答案可能还取决于其他细节,或者取决于您准备做什么。
例如,如果您的所有项目都在 VCS 中独立管理(IOW,如果它们的根目录有 .git/
或 .svn/
),您将可以访问自动解决方案。 gutentags 就是其中之一——请参阅@apparat 的回答。也存在独立于 vim 的解决方案,用于侦听已提交的文件或已修改的文件 -- @romainl has just presented a few of them on reddit yesterday, and I'm quite confident they have already been described on SO. There is also my lh-tags plugin,这与 gutentags 非常相似,并且会自动为每个缓冲区设置 &tags
项目 -- 我还没有检查 gutentags 在这个主题上做了什么。
如果您的项目不在 VCS 下,您将需要另一种表达方式:"this is project foo" 和 "this is project bar"。 This SO Q/A addresses this topic. From there you should be able to set (locally) l:&tags
to whatever is best for each project, and even to tune how vim plugins that generates tags shall operate -- I'm quite a (the?) monomaniac regarding project awareness 在我的插件中。注意:在 lh-tags 的情况下,你只需要告诉插件在哪里生成标签文件,它就会相应地更新 &tags
。
我目前有这样一个项目目录
MainProject
|_ProjectA
| |_src
| |_file1.cpp
| |_file2.cpp
| |_.....
| |_tags <---tag file generated here
|_ProjectB
| |_src
| |_file3.cpp
| |_file4.cpp
| |_.....
|_tags <---tag file generated here
现在 file4.cpp 使用 file1.cpp 中的项目,但似乎因为它位于不同的文件夹中,所以我收到消息
cstag - tag not found
目前我进入了我的 ProjectA 和 ProjectB 并为每个都做了这个
ctage -R .
因此在每个项目中生成了哪个标签文件。 我的问题是如何指定生成标签文件的位置。在那种情况下,所有标签文件将彼此相邻,希望这将解决这个问题
我建议使用 gutentags vim 插件来处理您的标记文件生成。 Gutentags 正在通过查找 SCM 文件夹(例如 .git)定位您的项目根目录,并为整个项目生成标签文件。
不需要其他配置,但您可以根据需要指定另一个缓存目录 (g:gutentags_cache_dir)。查看帮助文件以获取更多配置选项 help gutentags
.
最简单的解决方案是生成一个 tags
文件:
$ cd MainProject
$ ctags -R .
并告诉Vim在查找tags
个文件时向上递归:
set tags=./tags;,tags;
没有一种方法可以满足您的需求。答案可能还取决于其他细节,或者取决于您准备做什么。
例如,如果您的所有项目都在 VCS 中独立管理(IOW,如果它们的根目录有 .git/
或 .svn/
),您将可以访问自动解决方案。 gutentags 就是其中之一——请参阅@apparat 的回答。也存在独立于 vim 的解决方案,用于侦听已提交的文件或已修改的文件 -- @romainl has just presented a few of them on reddit yesterday, and I'm quite confident they have already been described on SO. There is also my lh-tags plugin,这与 gutentags 非常相似,并且会自动为每个缓冲区设置 &tags
项目 -- 我还没有检查 gutentags 在这个主题上做了什么。
如果您的项目不在 VCS 下,您将需要另一种表达方式:"this is project foo" 和 "this is project bar"。 This SO Q/A addresses this topic. From there you should be able to set (locally) l:&tags
to whatever is best for each project, and even to tune how vim plugins that generates tags shall operate -- I'm quite a (the?) monomaniac regarding project awareness 在我的插件中。注意:在 lh-tags 的情况下,你只需要告诉插件在哪里生成标签文件,它就会相应地更新 &tags
。