VIM全方位完成真的如此有限吗?或者我错过了什么?

时间:2011-01-28 03:16:35

标签: vim intellisense omnicomplete

红宝石:

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

全面完成测试

file.readl
   ---------
   readline     <- PASSED
   readlines
   ---------

"hola".capital
   ---------
   capitalize   <- PASSED
   capitalize!
   ---------

lines.
                <-- FAILED (no suggestions)

lines[0].capital
                <-- FAILED (no suggestions)

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

我错过了什么吗?可能是intellisense可以改进一些如何为Ruby / Python?

1 个答案:

答案 0 :(得分:10)

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

这只是暗示类似的话。所以是的,在这方面,Vim比IDE更受限制。这也是为什么Eclipse可以在你输入错误时提出错误的原因,而Vim则不能。

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

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

有一些插件可以解决这些限制(omnicpp使用ctags来确定某些方法的范围)但它们通常是基于每种语言开发的,并且没有灵丹妙药。