0

ctags也可以从层次结构中的目录中标记符号,还是仅限于为当前和子目录创建标记?

基本上我正在寻找类似符号交叉引用的 Visual Studio,它对于理解外星源代码流非常有帮助。

如果不是 Vim,那么我应该使用哪个其他编辑器?

谢谢

4

4 回答 4

2

Ctags 只递归到子目录。但是您所要做的就是ctags -R .在您的项目主目录中运行,它会tags为您的整个项目创建一个文件。

于 2012-12-29T21:58:21.383 回答
2

您不仅限于在 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它在您所在的目录层次结构中找到的第一个文件。

您可以结合这两种技术来创建一个项目本地标签文件,然后是一个不经常更新的“全局”标签文件。

于 2012-12-30T01:01:28.457 回答
1

虽然它有类似的用户界面来要求它做这件事,所以你需要实际指定“向下目录”,我发现这cscope是一个非常好的工具,它可以完成 ctags 所做的一切以及更多。

于 2012-12-29T22:05:23.110 回答
0

ctags(至少是 exctags)可以为您想要的任意数量的目录树创建标签。只需运行

exctags -R dir1 dir2 ...

然后 vim 知道你需要的所有符号。例如,其中一个目录可能是/usr/include您自己的源目录的补充。

确保从您在其中创建文件vim path/to/file.c的同一目录运行。tags

于 2012-12-29T21:59:42.970 回答