Vim:如何进入声明(类,方法,函数,变量等)

pab*_*ara 30 tags vim

现在我正在处理一个使用许多类,方法,函数,变量等的文件.是否可以转到所有这些的声明?请注意,其中一些声明属于同一个文件,但其他声明属于其他文件(可能无法打开,您不知道声明的位置,但确实存在).如果声明是目录中的一级,会发生什么?如果它是一级下来怎么办?

这是根据我们正在讨论的编程语言以不同的方式完成的,或者无论语言如何,查找声明的过程都是相同的?

我一直在阅读,似乎解决方案与标签有关.但是,我想知道如何实现这一目标(一步一步),特别是考虑到我们在某些情况下正在讨论其他文件中的定义.

我知道这可以通过IDE完成,但我想知道使用vim可以实现多少不同.

我只有全新安装的Vim.我还没有安装任何插件,但如果有必要,我愿意这样做.也许这可以在没有插件的情况下完成.

提前致谢!

Ing*_*kat 26

设置标签并不是那么困难(尽管在Vim中大多数情况下)它与IDE相比并不那么自动.

  1. 首先,您需要该ctags工具.今天最常见的是在Ctags.sourceforge.net上找到的Exuberant Ctags.
  2. 接下来,您需要为项目中的所有文件创建标记数据库(文件名tags).这通常是通过ctags -R .从项目根目录运行(也是从Vim内部运行)来完成的:!ctags ....丰富的Ctags支持41种语言,您甚至可以通过正则表达式扩展它.
  3. 最后,需要配置Vim来获取标签数据库.使用:set tags=./tags;,它将在文件的目录中向上搜索根目录.如果您有某些全局包含目录,则可以添加这些目录.
  4. 有了它,你可以开始使用像<C-]>和的Vim标签功能:tag.

您需要定期更新标签数据库 ; 有插件(如easytags.vim)可以自动为您完成.

  • 传递`--exclude = file.js`,或者忽略警告. (3认同)
  • B)阅读`:help'tags'`和`:help file-searching`(不要被吓倒!).C)是的,例如. (3认同)
  • A)使用`ctags -R`,在当前(项目根目录)目录中创建数据库,因此所有文件都将“向下”存储;从文件的角度来看,这是另一回事,所以不用担心。 (2认同)
  • 这个问题要求申报.Ctrl +]将带您进入定义,但不会进入声明.我加入了一个项目,其中使用文档作为带有声明的*.h文件中的注释而不是带有定义的*.c文件中的注释.有一些方法可以跳转到声明和定义,这将非常方便. (2认同)
  • 好,我知道了.我需要使用ctags的--LANG-kinds =选项来添加函数原型.vim:tselect命令然后可以很容易地跳转到原型或定义. (2认同)

小智 6

您可以尝试gd,它转到本地声明,更强大的"去定义",您可能想尝试tagsIngo建议.