7

红宝石:

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不能用于真正的开发,因为它在非常简单的情况下失败了?

我错过了什么吗?对于 Ruby/Python,智能感知可能会有所改进吗?

4

1 回答 1

10

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

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

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

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

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

于 2011-01-28T07:58:13.083 回答