繁体   English   中英

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

[英]How to have Vim recognize the object type when accessing an STL container, for autocompletion

我有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 (或这里 )。

虽然性能似乎很成问题(请看这里: 如何提高clang_complete的完成速度? )。

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

参考:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM