2009-10-24 38 views
2

我注意到,即使对于系统模块,代码完成也不能正常工作。Vim Python omni-completion无法在系统模块上工作

举例来说,如果我有一个简单的文件,做:

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

如果我按p,我不为get方法完成我希望看到(我没有看到搜索()例如,但我确实看到其他人,如func_closure(),func_code())。

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

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

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

回答

2

完成这种事情是棘手的,因为它需要执行实际的代码来工作。

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

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

+0

在IDLE中进行相同类型的测试会产生不同的完成情况,具体取决于是否匹配,所以您的答案很有意义。谢谢。 – jhp 2009-10-24 19:54:46

0

我从来没有得到内置omnicomplete为任何语言工作。我在pysmell上获得了最大的成功(这在github中似乎比官方的回购版稍微更新了一些)。我仍然没有发现它的可靠性足以使用一贯,但我不记得确切的原因。

我已经采取了为我的主要库建立一套广泛的snipMate片段,并使用默认选项卡完成来补充。

相关问题