有没有办法在Vim中为Ruby建立良好的自动完成功能?

时间:2011-08-31 16:28:20

标签: ruby vim omnicomplete

我一直在尝试为Ruby代码设置Vim自动完成功能并且没有成功。我的意思是“工作”,但我希望有更好的插件或配置可用。

我已经设置了rubycomplete插件,它做得不错,但没有像RubyMine这样的IDE。一旦我安装它,它只是一股清新的空气,看看我错过了什么。它非常清楚语法,上下文,通常只显示相关的可能选项。

也许我没有正确设置。找不到教程,博客文章,关于如何解决这个问题的好文档(特别是最新的文档)是不可能的。有时您会发现有不同的工具和设置,并且没有太多解释如何去做。

此类事物是否有社区标准?实现这一目标的最佳工具是什么?任何好的教程,来源,如何去做的线索?

我一直听到人们说他们喜欢Vim而不是像Rubymine这样的IDE,并且他们可以通过适当的插件配置在很多方面实现几乎相同的行为,但我的经验并不相同。我真的想继续使用Vim,因为它更轻,我喜欢编辑器,但生产力是最重要的,我浪费了太多时间阅读3年和4年前的博客文章关于如何设置它。

2 个答案:

答案 0 :(得分:2)

您可以在插入模式下点击Ctrl + x,然后点击Ctrl + o(omni)以获取Ruby方法列表。如果您已输入一些字符,例如ea,则会获得eacheach_with_index等。

在我的vimfiles中,使用缓冲区中的另一个单词映射完成。

它不像IDE那样伟大,例如Netbeans或Rubymine,但效果还不错。

按下Ctrl + x后,您可以使用单词,行等完成其他组合。

还有eclimd使用无头Eclipse提供自动完成但我从未设法弄清楚如何让它工作。将Vim安装并连接到Eclipse很容易,但之后......

Snipmate可能是另一种选择,ea<tab>可扩展为each { |element| }

答案 1 :(得分:1)

对于大多数需要对语言有深入了解的操作,我通常会发现与专用IDE相比,Vim缺乏。

例如,你不能使用范围自动重构代码(在类Monkey中将foo()更改为bar(),而不是在整个项目中的类Ape中更改。)

同样,自动完成并不总是很聪明。我认为对于C / C ++而言,由于像clang_complete这样的工具,情况是可以忍受的。但对于Java或不太流行的语言,我觉得完成脚本不能胜任任务。所以你最终花了很多时间来修补脚本。问题是,为了实现良好的自动完成,您需要充分利用解释器或编译器的全部功能,显然这并不容易。

我仍然继续使用Vim主要是因为我更有效地编辑代码块但是当情况需要时,我也使用Vim旁边的IDE。

我不知道Ruby完成的具体情况,但我不确定你会得到肯定的答案。

我的梦想是每个IDE都有一个强制性的完整的 vi输入模式。