在Vim中自动完成
简而言之,我正在为Vim编辑器寻找工作自动完成功能。 我以前曾经争辩说,Vim完全取代了Linux下的IDE,虽然这确实如此,但缺乏一个重要的特性:自动完成。
我知道Ctrl + N,Exuberant Ctags集成,Taglist,cppcomplete和OmniCppComplete。 唉,这些都不符合我对“工作自动完成:”的描述
class
,或while
。 好吧。 tags
文件需要再次手动更新。 我意识到这样一个事实:即使现代的,全面的IDE也不能提供良好的C ++代码完成。 这就是为什么我直到现在才接受Vim在这方面的缺失。 但我认为完成代码的基本级别并不是太多要求的,实际上它是高效使用所必需的。 所以我正在寻找能够完成以下事情的事情。
语法意识 。 cppcomplete承诺(但不提供给我),正确的,范围感知的自动完成以下内容:
variableName.abc
variableName->abc
typeName::abc
而且,其他任何东西都是完全无用的。
可配置性 。 我需要指定(容易)源文件的位置,以及脚本从哪里获取其自动完成信息。 实际上,我的目录中有一个Makefile,它指定了所需的包含路径。 Eclipse可以解释其中的信息,为什么不使用Vim脚本?
最新的 。 只要我在文件中更改某些内容,我想要自动完成来反映这一点。 我不想手动触发ctags
(或类似的东西)。 另外,更改应该是渐进的,即当我只更改了一个文件时, ctags
重新解析整个目录树(可能很大)是完全不可接受的。
我忘记了什么吗? 随时更新。
我对很多配置和/或修补程序感到满意,但我不想从头开始编写解决方案,而且我也不擅长调试Vim脚本。
最后一点,我真的很喜欢Java和C#类似的东西,但我认为这太令人ctags
了: ctags
只解析代码文件,Java和C#都有大量的预编译框架需要编制索引。 不幸的是,没有IDE的开发.NET甚至比C ++更像是PITA。
试试YouCompleteMe。 它通过libclang接口使用Clang,提供语义C / C ++ / Objective-C完成。 这很像clang_complete,但速度更快,模糊匹配。
除上述内容外,YCM还为C#,Python,Go,TypeScript等提供语义完成。它还为没有语义支持的语言提供非语义,基于标识的完成。
还有clang_complete ,它使用clang
编译器为C ++项目提供代码完成。 此插件的疑难解答提示还有一个问题。
只要项目编译,该插件似乎工作得很好,但对于大型项目来说速度过于缓慢(因为它试图完全编译生成标签列表)。
按照要求,这里是我早些时候给出的评论:
看看这个:
如果你想在MacOSX上使用monodevelop,这个链接应该会对你有所帮助
祝你好运,快乐的编码。
链接地址: http://www.djcxy.com/p/66215.html