简而言之,我正在为Vim编辑器搜索 working 自动完成功能 . 我已经完全取代了Linux下的IDE,虽然这确实是正确的,但它缺少一个重要特性:自动完成 .
我知道Ctrl N,Exuberant Ctags integration,Taglist,cppcomplete和OmniCppComplete . 唉,这些都不符合我对“工作自动完成”的描述
-
Ctrl+N 很好地(仅)如果您已经忘记如何拼写
class
或while
. 那好吧 . -
Ctags 为您提供了基本但有很多弊端 .
-
Taglist 只是一个Ctags包装器,因此继承了它的大多数缺点(尽管它适用于列表声明) .
-
cppcomplete 根本不知道我做错了什么,或者它是否正确“工作”并且限制是设计的 .
-
OmniCppComplete 似乎与cppcomplete具有相同的问题,即自动完成功能无法正常工作 . 此外,
tags
文件再次需要手动更新 .
我知道即使是现代的,完整的IDE也不能提供良好的C代码完成 . 这就是为什么我直到现在才接受Vim在这方面的不足 . 但我认为代码完成的基本级别并不是太多要求,实际上是 生产环境 性使用所必需的 . 所以我正在寻找能够完成以下任务的东西 .
- Syntax awareness . cppcomplete promises(但不会为我提供),正确,范围感知自动完成以下内容:
variableName.abc
variableName->abc
typeName::abc
而且,其他任何东西都是完全没用的 .
-
Configurability . 我需要(轻松地)指定源文件的位置,以及脚本从何处获取其自动完成信息 . 事实上,我的目录中有一个Makefile,它指定了所需的包含路径 . Eclipse可以解释其中的信息,为什么不是Vim脚本呢?
-
Up-to-dateness . 一旦我在文件中更改了某些内容,我希望自动完成功能能够反映出这一点 . 我不想手动触发
ctags
(或类似的东西) . 此外,更改应该是增量的,即当ctags
完全无法接受ctags
来重新解析整个目录树(可能很大) .
我忘了什么吗?随意更新 .
我很满意很多配置和/或修补但我不想从头开始编写解决方案,而且我不擅长调试Vim脚本 .
最后一点,我不太希望: ctags
只解析代码文件,Java和C#都有大量的预编译框架需要编制索引 . 不幸的是,developing .NET without an IDE甚至比C更像是PITA .
7 回答
试试YouCompleteMe . 它通过libclang接口使用Clang,提供语义C / C / Objective-C完成 . 它很像clang_complete,但速度更快,并且模糊匹配 .
除了上述内容之外,YCM还为C#,Python,Go,TypeScript等提供语义完成 . 它还为没有语义支持的语言提供非语义,基于标识符的完成 .
还有clang_complete使用clang compiler为C项目提供代码完成 . 这个插件还有troubleshooting hints的另一个问题 .
只要项目编译,插件似乎工作得相当好,但对于大型项目来说速度过慢(因为它尝试完整编译以生成标记列表) .
根据要求,这是我之前给出的评论:
看看这个:
Vim integration to MonoDevelop至少.net的东西至少..
OmniCompletion
如果你想在MacOSX上使用monodevelop,this link应该会帮助你
祝你好运,编码愉快 .
我刚刚在another question找到了项目Eclim . 这看起来很有希望,至少对于Java集成而言 .
我参加聚会有点晚了,但autocomplpop可能会有所帮助 .
你正在寻找像intellisense这样的东西?
insevim似乎解决了这个问题 .
链接到截图here
有人提到code_complete吗?
但你不喜欢ctags,所以这可能不是你想要的......