-1

ctags -R dirName, vim -t tags 很强大,因为在这两个命令之后,你现在可以在那个项目的代码之间导航,例如你可以使用:tag functionName直接跳转到某个函数的代码,但是这个操作仍然有一些缺陷,通常一个源代码可以包含一些函数调用,例如 va_start(),而这个代码不包含在 dirName 目录中,所以没有为这个函数生成索引,你不能导航到 va_start() 的定义,但是需要导航到这个函数吗?如何找到该代码?我什至不知道 va_start() 的确切定义在哪里。如何为系统功能或第三方功能生成 ctags 索引?

4

1 回答 1

5

当您使用“ctags -R dirName”时,您只是为目录 dirName 的内容编制索引符号。

发生的情况是“va_args”在 stdarg.h 中定义,它是 C 标准库的头文件。

每次使用外部库中的符号时都会遇到同样的问题。

因此,如果您想让所有符号都可用,除了您的程序之外,您还可以索引外部库的代码。

它的意思是 :

  1. 源代码应该可用(并非总是如此)

  2. 一旦您在系统上找到文件所在的位置,就应该将其解析为包含在您的“标记”文件中。

因此,一旦您执行了ctags -R projectPath,您就可以执行ctags -Ra /usr/include将 /usr/include 的所有内容附加到您的标记文件中。

更一般地说,您想做一些事情,比如ctags -Ra librarySourcePath让程序中使用的所有符号都可用。

编辑:但是要小心:/usr/include 可能包含很多文件,因此文件的大小tag会大大增加,因此,每次搜索要跳转到它的符号时,它可能会慢得多!

于 2012-02-17T09:36:28.553 回答