ctags 可以从层次结构中的目录中标记符号,还是仅限于为当前目录和子目录创建标记?
基本上我正在寻找符号交叉引用的Visual Studio,它对于理解外来源代码流非常有帮助。
如果不是Vim,那么我应该使用哪个其他编辑器?
感谢
答案 0 :(得分:2)
Ctags只能递归到子目录。但是您所要做的就是在项目主目录中运行ctags -R .
,它将为您的整个项目创建一个tags
文件。
答案 1 :(得分:2)
您不仅限于在Vim中指定一个标签文件。这是其他答案的替代方案;你可以这样做:
set tags=tags,~/wintags,c:/path/to/moretags/etc
因此,当您只想更新本地标记时,无需花时间重新生成单片标记文件。
关于OP在另一个答案中的评论,
是的,这是正确的,但是当我打开一个文件说proj / dir1 / def.c并按一个函数名称时按ctrl +],在proj / dir2 / abc.c中定义,我找不到标签:(
您还可以在'proj'根目录中为所有项目创建一个标记文件:
set tags=tags;c:/path/to/proj
这将使用它找到的第一个名为tags
的文件,当它从您所在的目录层次结构向上移动时。
您可以将这两种技术结合起来,以获得项目本地标签文件,然后将“全局”标签文件组合起来,而不是经常更新。
答案 2 :(得分:1)
虽然它有类似的用户界面要求它做它的事情,所以你需要实际指定“下去目录”,我发现cscope
是一个非常好的工具,它做了ctags所做的一切和多一点。
答案 3 :(得分:0)
ctags(好吧,至少exctags)可以为你想要的目录树创建标签。只需运行
exctags -R dir1 dir2 ...
然后vim知道你需要的所有符号。例如,除了您自己的源目录之外,其中一个目录可能是/usr/include
。
确保从您在vim path/to/file.c
文件中创建的同一目录中运行tags
。