ctags -R dirName, vim -t Tags 非常强大,因为在这两个命令之后,你现在可以在该项目的代码之间导航,例如你可以使用 :tag functionName 跳转到某个函数的代码,但是这个操作仍然有一些缺陷,通常情况下一个源代码可能包含一些函数调用,例如 va_start(),而该代码不包含在 dirName 目录中,因此不会为该函数生成索引,并且无法导航到定义va_start(),但是需要导航到这个函数吗?如何找到该代码?我什至不知道 va_start() 的确切定义在哪里。如何为系统功能或第三方功能生成ctags索引?
最佳答案
当您使用“ctags -R dirName”时,您只是为目录 dirName 的内容建立索引符号。
发生的情况是“va_args”在 stdarg.h 中定义,它是 C 标准库的头文件。
每次使用外部库中的符号时,您都会遇到相同的问题。
因此,如果您希望所有符号都可用,除了您的程序之外,您还必须为外部库的代码建立索引。
这意味着:
源代码应该可用(但情况并非总是如此)
一旦您在系统中找到该文件的位置,就应该对其进行解析以将其包含在您的“标记”文件中。
因此,一旦执行了 ctags -R projectPath
,您就可以执行 ctags -Ra/usr/include
将/usr/include 的所有内容附加到标记文件中。
更一般地说,您希望执行诸如 ctags -Ra librarySourcePath
之类的操作来获取程序中使用的所有符号。
编辑:
但要小心:/usr/include 可能包含大量文件,因此 tag
文件的大小可能会大大增加,因此,每次您搜索要跳转到它的符号时,速度可能会慢得多!
关于linux - 为什么 vim -t ctags 不够?我无法跳转到我想要的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9325583/