Vim Python omni-completion无法在系统模块上工作

时间:2009-10-24 08:55:06

标签: python vim omnicomplete

我注意到即使对于系统模块,代码完成也不能很好地工作。

例如,如果我有一个简单的文件:

import re
p = re.compile(pattern)
m = p.search(line)

如果我输入p。,我没有完成我希望看到的方法(我没有看到例如search(),但我确实看到其他人,例如func_closure(),func_code() )。

如果我输入m。,我没有得到任何完成(在这种情况下,我希望.groups())。

这似乎不会影响所有模块..有没有人看到过这种行为并知道如何纠正它?

我在WinXP上运行Vim 7.2,使用来自vim.org(0.9)的最新pythoncomplete.vim,运行python 2.6.2。

2 个答案:

答案 0 :(得分:2)

完成这类事情很棘手,因为它需要执行实际代码才能工作。

例如,p.search()可以返回None或MatchObject,具体取决于传递给它的数据。

这就是为什么omni-completion在这里不起作用,也许永远不会。它适用于可以静态确定的事物,例如模块的内容。

答案 1 :(得分:0)

我从未让内置的omnicomplete适用于任何语言。我在pysmell取得了最大的成功(最近github似乎比官方回购更新了一些)。我仍然没有发现它足够可靠,一直使用,但我不记得确切原因。

我已经为我的主要库构建了一组广泛的snipMate代码段,并使用默认的制表符来完成补充。