2

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

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

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。

4

2 回答 2

2

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

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

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

于 2009-10-24T16:21:55.660 回答
0

我从来没有让内置的omnicomplete适用于任何语言。我在pysmell上取得了最大的成功(它在github上的更新似乎比在官方 repo 中的更新稍晚一些)。我仍然没有发现它足够可靠,无法持续使用,但我不记得确切原因。

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

于 2009-10-24T16:35:15.980 回答