Skip to main content
 首页 » 编程设计

VIM:更精确的 C/C++ 代码解析解决方案

2024年12月31日11yjmyzz

上一篇:
我已经在 VIM 工作了大约一年了。很多很棒的东西:组合、脚本。每当我在不同的编辑器中编辑内容时,如果没有 VIM 的导航,我会感到迟钝/不舒服。

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

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

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

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

请您参考如下方法:

搜索和调用树

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

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

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

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

    代码完成

    关于自动代码补全,我主要使用 OmniCppComplete ,它使用标签来提供上下文感知代码完成。它并没有那么糟糕。

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