我目前有一个像这样的项目目录
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 .
因此在每个项目中生成了标记文件。 我的问题是我如何指定生成标签文件的位置。在这种情况下,所有标签文件将彼此相邻,并希望这将解决此问题
答案 0 :(得分:3)
最简单的解决方案是生成一个tags
文件:
$ cd MainProject
$ ctags -R .
告诉Vim在查找tags
个文件时向上递增:
set tags=./tags;,tags;
答案 1 :(得分:2)
我建议使用gutentags vim插件来处理您的代码文件生成。 Gutentags通过查找SCM文件夹(例如.git)来查找项目根目录,并为整个项目生成标记文件。
不需要其他配置,但如果您愿意,可以指定另一个缓存目录(g:gutentags_cache_dir)。请查看帮助文件以获取更多配置选项help gutentags
。
答案 2 :(得分:1)
只有一种方法可以满足您的需求。答案也可能取决于其他细节,或取决于您准备做什么。
例如,如果您的所有项目都是在VCS中独立管理的(IOW,如果他们的根目录中有.git/
或.svn/
),您就可以访问自动化解决方案。 gutentags就是其中之一 - 请参阅@ apparat的回答。还存在独立于vim的解决方案,用于侦听已提交的文件或已修改的文件 - @romainl has just presented a few of them on reddit yesterday,并且我非常有信心他们已经在SO上进行了描述。还有我的lh-tags plugin,它与gutentags非常相似,并且会自动为属于项目的每个缓冲区设置&tags
- 我还没有检查过gutentags在这个主题上做了什么。
如果你的项目不在VCS下,你需要另一种说法:&#34;这是项目foo&#34;,&#34;这是项目栏&#34; 。 This SO Q/A addresses this topic。从那里你应该能够(本地)l:&tags
设置最适合每个项目的内容,甚至可以调整生成标签的vim插件如何运行 - 我是一个(?)monomaniac关于我的插件中的project awareness。注意:在lh-tags的情况下,你只需要告诉插件应该生成标签文件的位置,它会相应地更新&tags
。