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

And*_*vov 24 vim ctags cscope

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

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

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

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

与Visual Assist相比,VIM的所有好处似乎比导航到类定义时浪费的时间更少,而Visual Assist则通过单个Alt-G快捷方式完成.

Xav*_* T. 7

搜索和调用树

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

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

  • 上下文敏感完成(虽然它在Windows上被禁用,因为它有bug)
  • 项目文件中的上下文敏感搜索(直通:CSearchContext)
  • 函数/方法的调用树(:CCallHierarchy)
  • 代码验证(:Validate)

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

代码完成

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

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


Nem*_*vic 1

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