5

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

 ptr->member1.member2[i].another_member.final_member = 42;

并且需要找出是什么类型final_member。通常我所做的是使用 C 标记跟踪类型链,从声明开始ptr并深入研究成员链。这很麻烦,而且我经常被困在某个地方挠头,问自己“链中的下一个成员是什么?” 更糟糕的是,final_member由于名称在多个结构中被重用,源树中的简单 grep for 会出现太多误报。

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

4

2 回答 2

2

如果我正在处理具有多个嵌套结构的项目,我会添加preview到该completeopt选项中。

结合出色的omnicppcomplete插件,如果您在完成菜单中选择一个条目,则会弹出一个小临时窗口。该临时窗口显示所选标签的一些属性。除其他外,它包含标签的搜索模式,如果是结构成员,通常包含其数据类型。

于 2013-08-06T19:26:12.693 回答
0

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

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

于 2013-08-06T20:22:23.507 回答