vim:显示C聚合(struct/union)成员的类型,即使在嵌套时也是如此

Jen*_*ens 5 c vim types ctags

我经常发现自己正在阅读包含表达式的其他开发人员的C代码

 ptr->member1.member2[i].another_member.final_member = 42;
Run Code Online (Sandbox Code Playgroud)

并需要找出什么类型final_member.通常我所做的是使用C标签追踪类型链,从声明ptr和挖掘成员链开始.这很麻烦,经常我被困在某个地方挠头,问自己"链中的下一个成员是什么?" 更糟糕的是,final_member源树中的简单grep 因为名称在多个结构中被重用而导致过多的误报.

有没有办法让vim直接给我答案?我愿意安装任何插件,甚至在光标位于final_member或选择整个表达式时键入几个字符:-)非GUI解决方案首选.

Dmi*_*ank 0

我真的建议您使用插件 clang_complete (或由 clang 提供支持的其他插件)来完成。它将通过真正的编译器为您提供纯粹的 C/C++/Objective-C 代码完成,而不是通过标签的丑陋方法。完成菜单中的每个项目也有字段类型(这就是您要寻找的)

Omnicppcomplete 在复杂的表达式上经常失败。Clang 工作得很好,因为它是真正很棒的编译器。