2011-01-28 46 views
7

红宝石:VIM omni-completion是否真的如此有限?或者我错过了什么?

file = File.new("some.txt", "r") 
lines = file.readlines 

全方位完成测试

​​

我试过的Python以及和它类似的方式工作。所以看起来omni-completion不能用于真正的开发,因为它在很简单的情况下失败了?

我错过了一些东西吗?可能是智能感知可以改进一些如何为Ruby/Python?

+0

这一切都取决于该omni完成脚本,它不一定是vim设置的一部分。如果有人走向极端,Omni完成脚本*可以*处理Intellisense处理的任何情况。 – progo 2011-01-30 09:50:58

回答

10

问题是,Vim不知道line是一个字符串,数组或其他一些类。 Vim没有深入的语法分析。 Vim不知道范围,如果定义了变量或方法等。

它只是建议类似的词。所以是的,Vim在这方面比IDE更有限。这也是为什么Eclipse可以在输入时提示错误,而Vim不能。

Vim更基本:在某种程度上,一切都是文本,并不一定被视为“代码”。

所以你是对的,这是Vim的一个限制。

有一些插件可以解决这些限制(omnicpp使用ctags来确定某些方法的范围),但它们通常是按照每种语言开发的,并且没有银色的子弹。

+0

+1 - 良好的回应。我还会补充说,使用动态语言时,问题会变得更加复杂,在动态语言中,直到运行时才知道对象的绑定。即使IDE必须在这些情况下有所帮助。 – 2011-01-28 14:27:26

相关问题