python - Vim Python 补全

标签 python vim omnicomplete

我在 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. 建议 getX 和 pr)。但它有进口 numpy.random,完成刹车。 注意:当我运行代码时,此导入正常工作。

Python 完成的先决条件是什么? 发生了什么,我应该怎么做才能完成 Python 工作。

由于我(相对)是 Vim 的新手,任何建议都表示赞赏。

编辑: 似乎问题在于在导入中使用 a.b 形式。如果我从 numpy 导入随机,一切都很好。如果这很容易解决,我也想让 a.b 工作。但现在我知道如何绕过它,这并不那么重要。

还有像这样的不寻常的问题,让我知道 future 会发生什么吗?

最佳答案

pythoncomplete 相当陈旧且无人维护。

尝试使用绝地:https://github.com/davidhalter/jedi-vim 它最初是一个改进的 pythoncomplete,但现在更强大了!

适用于复杂代码:completion

并具有附加功能: enter image description here

所有可能的功能都有一个列表:

  • 内置函数/类支持
  • 复杂的模块/函数/类结构
  • 忽略语法和缩进错误
  • 多重返回/ yield
  • 元组赋值/数组索引/字典索引
  • 异常/with-statement
  • *args/**kwargs
  • 装饰器
  • 描述符 -> 属性/静态方法/类方法
  • 闭包
  • 生成器(yield 语句)/迭代器
  • 支持一些魔术方法:__call____iter____next____get____getitem____init__
  • 支持 list.append、set.add、list.extend 等
  • (嵌套)列表推导/三元表达式
  • 相对导入
  • getattr()/__getattr__/__getattribute__
  • 函数注释(py3k 特性,现在被忽略,但正在被解析。 我不知道该怎么处理它们。)
  • 类装饰器(py3k 功能,也被忽略,直到我找到用处 案例,这不适用于绝地)
  • 简单/通常的sys.path修改
  • isinstance 检查 if/while/assert

关于python - Vim Python 补全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097299/

相关文章:

python - 使用类似形状的函数获取一维 numpy.array 的 "1"

Python - doctest 与 unittest

vim 映射 ctrl -` or <c-` > 到 <c-w>w

mercurial - 如何设置gvim中输出显示 "hg diff"?

java - Java 的 Vim omnicompletion

ruby-on-rails - Vim ruby 自动完成

python - 如果在层次结构中混合使用新旧样式类,会发生什么情况?

linux - 如何搜索不可见的控制字符

crash - gvim-远程ftp上的omnicompletion崩溃

Python列表迭代只保留最后一个值