我在完成 Vim 和 Python 时遇到问题。事实上,我很困惑这是如何工作的。
我有通用 gvim 7.3,在 windows 7 上(使用 python/dyn)我正在使用 SuperTab 插件,其中一些是特定于 python 的,在 vimrc 中有以下设置:
au FileType python set omnifunc=pythoncomplete#Complete
let g:SuperTabDefaultCompletionType = "context"
let g:SuperTabContextDefaultCompletionType = "<c-n>"
我没有设置 PYTHONPATH 环境变量。
系统模块的完成工作正常。
起初我认为它根本不适用于非系统代码,但事实并非如此。正在发生的事情最好在以下代码中显示:
import numpy.random # if this line is commented completion in last line works
class C(object):
def __init__(self, x_):
self.x=x_
def getX(self):
return self.x
def pr(self):
print 'ok'
a=C(10) # nothing changes if I put C() instead, even though it would be wrong
a. # here is completion in question
问题是如果导入行被注释,完成工作(a.<tab> 建议 getX 和 pr)。但它有进口 numpy.random,完成刹车。注意:当我运行代码时,此导入正常工作。
Python完成的先决条件是什么?发生了什么,我应该怎么做才能完成 Python 工作。
由于我(相对)是 Vim 的新手,任何建议都值得赞赏。
编辑: 似乎问题在于在导入中使用 ab 形式。如果我从 numpy 导入随机,一切都很好。如果这很容易解决,我也想让 ab 上班。但现在我知道如何绕过它,这并不重要。
是否还有更多像这样的不寻常问题,以便我知道将来会发生什么?