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