如何理解vim的代码?

如何理解vim的代码?,vim,code-analysis,Vim,Code Analysis,Vim是一个很好的编辑器,我将它用于许多任务 然而,当开始开发一个新的(可能是巨大的)代码库时,我觉得用它来理解代码是如何工作的并不舒服 例如,如果我想知道C++函数在哪里,我可以在每个代码< ***/*.CPP< /C>文件和:COpen/ QueFixt窗口中,对每个事件中的函数进行跳转:那根绳子的长度 如果我用Eclipse(C++的调用层次结构)来做同样的事情,那将不仅仅是一个字符串,而是一个在对象中定义的C++方法,所以我将得到一个函数的用法的精确指示(而不是一个在另一个类中定义的名字

Vim是一个很好的编辑器,我将它用于许多任务

然而,当开始开发一个新的(可能是巨大的)代码库时,我觉得用它来理解代码是如何工作的并不舒服

例如,如果我想知道C++函数在哪里,我可以在每个代码< ***/*.CPP< /C>文件和<代码>:COpen/<代码> QueFixt窗口中,对每个事件中的函数进行跳转:那根绳子的长度

如果我用Eclipse(C++的调用层次结构)来做同样的事情,那将不仅仅是一个字符串,而是一个在对象中定义的C++方法,所以我将得到一个函数的用法的精确指示(而不是一个在另一个类中定义的名字相同的函数)。 所以问题是,如何使vim成为分析代码的强大工具

子问题:

  • 有没有专门为此设计的vim插件
  • 使用vim只分析代码有意义吗?也许外部工具(例如:)可以完成这项工作

Vim是一个文本编辑器。您想要的内容几乎完全与编辑文本正交,完全超出Vim自己的能力范围

然而,Vim非常擅长使用外部工具,如和,在项目中导航。假设您已经创建了一个
标记
文件和/或一个
cscope.out
数据库,Vim有一系列命令可用于“跳转到定义”、“跳转到使用”等:
:ts[elect]foo
覆盖函数名等…您可以在
:h ctags
:h cscope
中找到所需的所有信息

如果你好奇,还有另一种选择。
cscope
的另一个优点是它有自己的TUI,可以在shell中使用

据我所知,唯一提供
cscope
(++
ctags
)接口的插件似乎仅限于C

有很多面向
ctags
的插件,比如或者您可以尝试,但是请注意,虽然
ctags
仅限于定义,
cscope
也可以进行使用和调用


您应该记住,这些工具是代码索引器:您不应该期望它们“理解”您的代码,甚至远不如IDE工具精确。然而,我喜欢Vim,我建议您使用比文本编辑器更适合该任务的工具。

当我从Netbeans切换到Vim时,我和您的感觉一样。我错过了Netbeans特性,右键单击就可以看到任何函数定义。免责声明:我主要使用Ruby、Javascript,有时使用PHP

我试过CTAG,但发现它不太准确,也不太干净。我还尝试了插件Tagbar和Taglist与CTAG一起使用。在我看来,Tagbar有点重,在处理标记时会占用大量CPU和内存。标记列表更好,但最好的用例是浏览长文件而不是标记

最后我放弃了使用CTAG

后来我发现有更好的语言解决方案。例如,对于Ruby,有一个插件可以显示已安装gems(libs)中任何函数的ri doc,只需一个键

但我仍然不经常使用,因为我的习惯已经改变了。我喜欢精简,在正确的地方,快速

现在我感到很舒服:

  • 将tmux与Vim一起使用。需要时在控制台中检查文档并验证代码
  • 使用snippet插件(Neosnippet)存储常用的代码、方法。Vim中的代码片段管理比我见过的任何IDE都要好得多,也更灵活
  • 使用大脑储存更多信息,减少鼠标触摸

  • 希望这些帮助。

    有一个名为fly.vim的插件,非常适合浏览源代码。它利用了cscope数据库并提供了简单的导航机制。将其与autotags插件结合使用,autotags插件可在中心位置为项目生成和维护cscope和CTAG,您可以轻松地在不同的代码库之间切换。 我使用Source Insight浏览Linux内核源代码,当我切换到这个组合时,我没有什么好抱怨的。不过,可能需要一些时间和/或努力才能加快此设置。如果您知道CTAG和cscope是如何工作的,那么,您可能会在不到一个小时内学会它。但其优点是:cscope索引代码速度快,vim使用cscope fast,fly.vim通过cscope查询并以可用格式快速显示。此外,它还保持跳转历史记录