Gor*_*sel 28 python vim omnicomplete
我在使用Vim和Python时遇到了麻烦.事实上,我很困惑这是如何工作的.
我在Windows 7上有通用的gvim 7.3(使用python/dyn)我正在使用SuperTab插件,其中一些是特定于python的,在vimrc中有以下设置:
au FileType python set omnifunc=pythoncomplete#Complete
let g:SuperTabDefaultCompletionType = "context"
let g:SuperTabContextDefaultCompletionType = "<c-n>"
Run Code Online (Sandbox Code Playgroud)
我没有设置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
Run Code Online (Sandbox Code Playgroud)
问题是如果对导入行进行注释,则完成工作(a.<tab>建议使用getX和pr).但它有导入numpy.random,完成刹车.注意:当我运行代码时,此导入正常工作.
Python完成的先决条件是什么?发生了什么,我该怎么做才能完成Python的完成工作.
因为我(相对)是Vim的新手,所以任何建议都表示赞赏.
编辑: 似乎问题是在导入中使用ab表单.如果我从numpy导入随机,一切都很好.如果这很容易解决,我也想从中工作.但是现在我知道如何绕过它并不是那么重要.
是否有更像这样的不寻常的问题,以便我知道未来会发生什么?
Dav*_*ter 30
pythoncomplete相当陈旧而且没有维护.
尝试使用Jedi:https://github.com/davidhalter/jedi-vim 它最初是一个改进的pythoncomplete,但现在功能更强大!
它适用于复杂的代码:
并具有其他功能:

有一个可能的功能列表:
__call__,__iter__,__next__,
__get__,__getitem__,__init__getattr()/ __getattr__/__getattribute__sys.path修改isinstance 检查if/while/assertPython是一种令人难以置信的动态语言,不适合完成.那里没有任何真正好的完成.IMO,在没有它的情况下生活比与其所有问题作斗争更容易.也就是说, python-mode真的很棒,就像neoascetic所说的那样.
| 归档时间: |
|
| 查看次数: |
14819 次 |
| 最近记录: |