24

Pre: 我已经在 VIM 工作了一年了。很多很棒的东西:组合,脚本。每当我在不同的编辑器中编辑某些东西时,如果没有 VIM 的导航,我会感到呆滞/不舒服。

问题: 最让我困扰的是使用现有工具(ctags、cscope)进行源代码导航。通常,ctags 找不到变量的声明,cscope 与 ctags 不同,它可以找到具有相同变量名的所有定义。调用树导航、查找前向声明以及单个类定义等同样疯狂。与 MS Intellisense、Visual Assist 甚至 Eclipse 中的源代码导航相比,Exuberant Tags/cscope 似乎已被弃用至少 10 年。

我知道有像 ViEMU 这样的工具,但它们并不能真正解决问题,因为你失去了很多 VIM 的功能。

问题: 我想知道是否有一种工具可以更好地解析源代码,或者有什么方法可以将 Intellisense 等源代码解析引擎集成到 VIM 中?也许有商业解决方案,或者有人准备实施一个?

与通过单个 Alt-G 快捷键完成的 Visual Assist 相比,VIM 的所有好处似乎比在导航到类定义时浪费的时间要少。

4

2 回答 2

7

搜索和调用树

您可以尝试eclim,这是在 Vim 中使用某些 Eclipse 功能的一种方式。

对于 C/C++,它提供:

  • 上下文相关完成(尽管它在 Windows 上被禁用,因为它有问题)
  • 项目文件中的上下文相关搜索(通过:CSearchContext
  • 函数/方法的调用树 ( :CCallHierarchy)
  • 代码验证 ( :Validate)

这不是很好,但在某些情况下它可以提供帮助。

代码完成

关于自动代码完成,我主要使用OmniCppComplete,它使用标签来提供上下文感知代码完成。这还不错。

根据 Luc Hermitte 的建议,您也可以使用clang_complete,它不需要 ctags,但需要安装 clang。

于 2011-02-23T07:59:23.610 回答
1

不幸的是,这是一个真正的问题。ctags 或 cscope 几乎无法与 Visual Studio 代码浏览竞争 - 它实际上使用 C++ 编译器前端来解析编辑器的代码。

于 2011-02-22T19:25:56.407 回答