2009-10-24 37 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片段,並使用默認選項卡完成來補充。

相關問題