简而言之,我正在寻找Vim编辑器可以正常工作的自动完成功能。我之前曾争论过,Vim完全替代了Linux下的IDE,尽管这确实是正确的,但它缺少一个重要功能:自动完成。
我了解Ctrl+ N,丰富的Ctags集成,Taglist,cppcomplete和OmniCppComplete。las,这些都不符合我对“自动完成工作”的描述:
Ctrl+N(仅当您忘记了如何拼写class或时,才能很好地工作)while。那好吧。
Ctags给您起了基础,但有很多缺点。
Taglist只是一个Ctags包装器,因此继承了它的大多数缺点(尽管它对于列表声明非常有效)。
cppcomplete根本无法按承诺工作,并且我无法弄清楚我做错了什么,或者它是否在“正常工作”并且限制是设计使然。
OmniCppComplete似乎与cppcomplete有相同的问题,即自动完成不能正常工作。此外,该tags文件再次需要手动更新。
我知道这样一个事实,甚至没有完善的现代IDE也不能提供良好的C ++代码完成功能。这就是为什么到目前为止,我已经接受Vim在这一领域的不足。但是我认为基本的代码完成水平要求不高,实际上是生产使用所必需的。所以我正在寻找至少可以完成以下任务的东西。
语法意识。cppcomplete承诺(但对我而言不兑现)以下内容的正确,作用域自动完成:
variableName.abc
variableName->abc
typeName::abc
实际上,其他任何东西都完全没有用。
可配置性。我需要指定(轻松)源文件的位置,并因此指定脚本从何处获取其自动完成信息。实际上,我的目录中有一个Makefile,它指定所需的包含路径。Eclipse可以解释其中的信息,为什么还没有Vim脚本?
最新。更改文件中的内容后,我希望自动完成功能能够反映这一点。我不想要手动触发ctags(或一些类似)。另外,更改应该是增量的,即当我只更改一个文件时,重新解析整个目录树(可能很大)是完全不可接受的ctags。
我忘记了什么吗?随时更新。
我对大量的配置和/或修改很满意,但是我不想从头开始编写解决方案,而且我也不擅长调试Vim脚本。
最后一点,我真的很喜欢Java和C#的相似之处,但我想这太令人希望了:ctags仅解析代码文件,Java和C#都具有庞大的预编译框架,需要对其进行索引。不幸的是,在没有IDE的情况下开发.NET比起C ++更像是PITA。