分享

c – 如何让Vim在访问STL容器时识别对象类型,以实现自动完成

 印度阿三17 2019-09-02

我有omnicppcomplete插件和繁琐的ctags,我使用以下命令为项目生成标签:

ctags -R --c  -kinds= p --fields= iaS --extra= q .

我想要实现的是让Vim在通过STL容器访问它时识别对象的类型,为我提供适当的自动完成建议列表.

例如,假设IntWrapper对象有一个getTheInt()方法,我有一个IntWrappers向量:

std::vector<IntWrapper> wrappers;

如果我有以下代码:

for (size_t i = 0; i < wrappers.size(); i  ) {
    wrappers[i].<VIM Cursor is here>
}

我希望VIM理解wrapper [i]是IntWrapper类型并且给我getTheInt()方法作为第一个自动完成选项,以及文档,就像我直接在IntWrappers对象上操作一样.

为了弄清楚我的期望,下面的第一个截图是当我要求对向量自动完成时会发生什么,第二个是当我直接访问对象时会发生什么,以及即使使用stl容器我也想要实现的.

(上面用红色突出显示的句子表示未找到表达式)

有没有插件(我不关心CPU昂贵)这样做?

非常感谢.

解决方法:

实际上,我认为omnicomplete无法处理上下文问题,因此您无法将其用于您的目的.进行C / STL自动完成的方法是使用clang_complete(或here).

虽然表现似乎很成问题(请看这里:How to improve the completion speed of clang_complete?).

关于这个主题的一个很好的教程(为C STL完成配置vim clang)可以在这里找到:http:///vimautocomplete.html

参考:

> Clang的C 98和C 11支持:http://clang./cxx_status.html
> Vim Clang_complete文档:https://github.com/krisajenkins/clang_complete/blob/master/doc/clang_complete.txt

注意:另一个选择是使用gccsense,这是一个使用GCC代码分析器的独立工具.这是项目主页的链接:http:///software/gccsense/
关于其使用的两个SO问题:

> gccsense vs. clang_complete
> Is there an alternative to ctags that works better?

来源:https://www./content-4-435001.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多