为了账号安全,请及时绑定邮箱和手机立即绑定

Vim中的自动补全

Vim中的自动补全

C++
月关宝盒 2019-11-21 11:10:16
简而言之,我正在寻找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.abcvariableName->abctypeName::abc实际上,其他任何东西都完全没有用。可配置性。我需要指定(轻松)源文件的位置,并因此指定脚本从何处获取其自动完成信息。实际上,我的目录中有一个Makefile,它指定所需的包含路径。Eclipse可以解释其中的信息,为什么还没有Vim脚本?最新。更改文件中的内容后,我希望自动完成功能能够反映这一点。我不想要手动触发ctags(或一些类似)。另外,更改应该是增量的,即当我只更改一个文件时,重新解析整个目录树(可能很大)是完全不可接受的ctags。我忘记了什么吗?随时更新。我对大量的配置和/或修改很满意,但是我不想从头开始编写解决方案,而且我也不擅长调试Vim脚本。最后一点,我真的很喜欢Java和C#的相似之处,但我想这太令人希望了:ctags仅解析代码文件,Java和C#都具有庞大的预编译框架,需要对其进行索引。不幸的是,在没有IDE的情况下开发.NET比起C ++更像是PITA。
查看完整描述

3 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

试试YouCompleteMe。它通过libclang接口使用Clang,提供语义C / C ++ / Objective-C补全。这很像clang_complete,但是速度更快并且具有模糊匹配。

除上述内容外,YCM还为C#,Python,Go,TypeScript等提供语义完成。它还为不支持语义的语言提供基于标识符的非语义完成。


查看完整回答
反对 回复 2019-11-21
?
慕森卡

TA贡献1806条经验 获得超8个赞

还有clang_complete,它使用clang编译器为C ++项目提供代码完成。该插件的疑难解答提示还有另一个问题。


只要项目编译,该插件似乎就可以很好地工作,但是对于大型项目,该插件的速度却令人望而却步(因为它会尝试进行完整的编译以生成标签列表)。


查看完整回答
反对 回复 2019-11-21
?
HUWWW

TA贡献1874条经验 获得超12个赞

根据要求,这是我之前给出的评论:


看一下这个:


Vim 至少可以集成到MonoDevelop。

OmniCompletion

如果要在MacOSX上使用monodevelop,此链接应为您提供帮助


祝你好运,编码愉快。


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 661 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信