首页 文章

在Vim中自动完成

提问于
浏览
242

简而言之,我正在为Vim编辑器搜索 working 自动完成功能 . 我已经完全取代了Linux下的IDE,虽然这确实是正确的,但它缺少一个重要特性:自动完成 .

我知道Ctrl N,Exuberant Ctags integrationTaglistcppcompleteOmniCppComplete . 唉,这些都不符合我对“工作自动完成”的描述

  • Ctrl+N 很好地(仅)如果您已经忘记如何拼写 classwhile . 那好吧 .

  • 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 回答

  • 35

    试试YouCompleteMe . 它通过libclang接口使用Clang,提供语义C / C / Objective-C完成 . 它很像clang_complete,但速度更快,并且模糊匹配 .

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

  • 5

    还有clang_complete使用clang compiler为C项目提供代码完成 . 这个插件还有troubleshooting hints的另一个问题 .

    只要项目编译,插件似乎工作得相当好,但对于大型项目来说速度过慢(因为它尝试完整编译以生成标记列表) .

  • 162

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

    看看这个:

    如果你想在MacOSX上使用monodevelop,this link应该会帮助你

    祝你好运,编码愉快 .

  • 7

    我刚刚在another question找到了项目Eclim . 这看起来很有希望,至少对于Java集成而言 .

  • 2

    我参加聚会有点晚了,但autocomplpop可能会有所帮助 .

  • 1

    你正在寻找像intellisense这样的东西?

    insevim似乎解决了这个问题 .

    链接到截图here

  • 3

    有人提到code_complete吗?

    但你不喜欢ctags,所以这可能不是你想要的......

相关问题