如何用vim理解代码?

Vin*_*Pii 3 vim code-analysis

Vim是一个不错的编辑器,我将它用于许多任务.

但是,当开始处理一个新的(可能是巨大的)代码库时,我不习惯使用它来解决代码,目的是了解事情是如何工作的.

例如,如果我想查看C++函数的使用位置,我可以:vimgrep在每个**/*.cpp文件中使用该函数,并且:copenquickfix窗口可以在每次出现时跳转到该字符串.

如果我对例如Eclipse(C++方法的调用层次结构)做同样的事情,那不仅仅是一个字符串,而是一个在对象中定义的C++方法,所以我将得到该函数的用法的精确指示(而不是也是在另一个类中定义的同名函数).

那么问题是,如何使vim成为分析代码的强大工具?

子问题:

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

rom*_*inl 7

Vim是一个文本编辑器.你想要的几乎与编辑文本完全正交,完全超出了Vim自身的能力.

但是,Vim非常擅长使用ctagscscope等外部工具在项目中导航.假设您已经创建了一个tags文件和/或cscope.out数据库,Vim有一堆命令可以用来"跳转到定义","跳转到使用"等等:ts[elect] foo,<C-]>通过函数名称等等...你可以找到所有你需要的信息:h ctags:h cscope.

如果你很好奇,GNU GLOBAL是另一种选择.另一个专业cscope是它带有你自己的TUI,你可以在你的shell中使用它.

我知道的唯一提供cscope(+ ctags)接口的插件是CCTree,它似乎仅限于C.

你可以尝试一些ctagsTagBarTagList这样的定向插件,但请注意,虽然ctags仅限于定义,cscope但也可以使用和调用者.

您应该记住,这些工具是代码索引器:您不应期望它们"理解"您的代码,或者甚至可以像IDE工具一样精确.不过我喜欢Vim,我建议你使用一个比文本编辑器更适合这个任务的工具.