當有一個「from」導入而不是普通導入時,Omnicompletion for Python似乎失敗。 舉例來說,如果我有這兩個文件:Vim的omnicompletion與Python中的「from」導入失敗
Test.py:
class Test:
def method(self):
pass
main.py:
from Test import Test
class Test2:
def __init__(self):
self.x = Test()
如果我嘗試激活omnicompletion爲self.x ...它說「模式未找到」。 但是,如果我改變import語句:
import Test
和self.x聲明:
self.x = Test.Test()
那麼我就能用omnicompletion預期(它表明 「法」,例如)。
我正在使用Vim 7.2.245和Python代碼完成(pythoncomplete)的默認插件。 我應該設置一些變量嗎?或者是預期這種行爲?
更新:
基於Jared的答案,我偶然被發現的東西:
Omnicompletion沒有這方面的工作:
from StringIO import StringIO
class Test:
def __init__(self):
self.x = StringIO()
self.x.<C-x><C-o>
s = Test()
但工作在此:
from StringIO import StringIO
class Test:
def __init__(self):
self.x = StringIO()
self.x.<C-x><C-o>
s = Test()
s.x = StringIO()
唯一的區別是重新宣佈x(實際上,如果我刪除__init__
內的聲明,它也可以)。
我再次測試了我的例子,我認爲問題不是「從」導入,而是在另一個類中使用導入的類。 如果我更改文件main.py
到:
from Test import Test
class Test2:
def __init__(self):
self.x = Test()
self.x.<C-x><C-o>
y = Test()
y.<C-x><C-o>
使用omnicompletion第一次嘗試失敗,但第二個能正常工作。 所以是的,看起來像在插件:)
所有這一切都是:不,沒有預料到,你沒有做任何錯誤=)這是一個錯誤。看起來像腳本在這裏維護:http://www.vim.org/scripts/script.php?script_id=1542我建議提交一個錯誤報告。 – 2010-07-09 23:23:22