2013-04-26 65 views
2

Vim是一个很好的编辑器,我用它来完成许多任务。但是,当谈到开始研究一个新的(可能是巨大的)代码库时,我不习惯用它来理解代码,目的是理解事情的工作方式。如何理解vim的代码?

例如,如果我想看看在使用C++函数,我可以:vimgrep在每**/*.cpp文件功能和:copen quickfix窗口跳到每一次出现该字符串的......。

如果我对例如Eclipse(C++方法的调用层次结构)不仅仅是一个字符串,而是一个定义在对象中的C++方法,所以我将精确地指出该函数的用法(而不是同名的函数在另一个类中定义)。

所以问题是,如何让vim成为分析代码的强大工具?

子问题:

  • 是否有专门为这个任何VIM插件?
  • 使用vim只分析代码有意义吗?可能有外部工具(例如:OpenGrok)可以完成这项工作吗?

回答

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.

有一堆像ctagsTagBar面向TagList插件,你可以尝试,但注意, ,而ctags仅限于定义,cscope也可以做用法和来电者。

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

2

当我从Netbeans切换到Vim时,我感觉和你一样。我错过了Netbeans功能,在右键单击时看到任何函数定义。声明:我使用红宝石,Javascript主要有时PHP

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

最后我放弃了使用ctags。

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

但我仍然不会经常使用,因为我的习惯已经改变。我喜欢事情要变得精益,要在正确的地方,并且要快。

现在我感到舒适:

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

希望这些帮助。

+0

什么是“大脑”? – sica07 2013-04-29 10:50:47

-1

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