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

标签 vim ctags cscope

上一篇:
我已经在 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。

    关于VIM:更精确的 C/C++ 代码解析解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5080211/

    相关文章:

    vim:如何既不使用 ctrl+w+ 也不更改默认键设置来 move 窗口

    Qt Creator 标签文件

    将 vim ctags <C-]> 和 <C-T> 键映射复制到 <C-Q> 和 <C-A>

    linux - 使用vim/cscope查找linux内核中的符号定义

    python - 如何在 Vim 中粘贴时保持制表符

    regex - Vim 匹配除行首字符之外的所有内容

    ruby - 当类定义为 "class Gem::SystemExitException"时,ctags 不起作用

    c++ - 用 C++ 解析 Exuberant Ctags

    具有多个目录的 Emacs 和 cscope

    vim - 如何在 Vim 中获得细粒度的撤消