Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim Python完成_Python_Vim_Omnicomplete - Fatal编程技术网

Vim Python完成

Vim Python完成,python,vim,omnicomplete,Python,Vim,Omnicomplete,我在Vim和Python完成方面遇到了问题。 事实上,我完全搞不懂这是怎么回事 我在Windows7上有通用的GVIM7.3(使用python/dyn) 我正在使用SuperTab插件,还有很多其他插件,其中一些 是特定于python的,在vimrc中有以下设置: au FileType python set omnifunc=pythoncomplete#Complete let g:SuperTabDefaultCompletionType = "context" let g:SuperTa

我在Vim和Python完成方面遇到了问题。 事实上,我完全搞不懂这是怎么回事

我在Windows7上有通用的GVIM7.3(使用python/dyn) 我正在使用SuperTab插件,还有很多其他插件,其中一些 是特定于python的,在vimrc中有以下设置:

au FileType python set omnifunc=pythoncomplete#Complete
let g:SuperTabDefaultCompletionType = "context"
let g:SuperTabContextDefaultCompletionType = "<c-n>"
问题是,若对导入行进行注释,则完成工作(a.建议getX和pr)。但这里有一个输入numpy.random,完成刹车。 注意:当我运行代码时,此导入正常工作

Python完成的先决条件是什么? 发生了什么,我应该做些什么来完成Python的工作

由于我(相对)不熟悉Vim,任何建议都非常感谢

编辑: 问题似乎在于在导入中使用a.b表单。如果我从numpy import random执行,则一切正常。如果这是合理容易修复,我想让a.b从工作也。但现在我知道如何绕过它,这就不那么重要了


还有像这样不寻常的问题吗?这样我就知道将来会发生什么事了。

Python是一种非常动态的语言,不适合自己完成。没有任何真正好的完成。在我看来,没有它的生活要比解决它的所有问题容易得多。也就是说,就像新禁欲主义者所说的那样,这真是太棒了。

pythoncomplete相当古老,而且没有维护

尝试使用绝地武士: 它最初是一个改进的pythoncomplete,但现在功能更强了

它适用于复杂代码:

并具有以下附加功能:

这里列出了所有可能的功能:

  • 内置函数/类支持
  • 复杂的模块/函数/类结构
  • 忽略语法和缩进错误
  • 多重收益/收益率
  • 元组分配/数组索引/字典索引
  • 例外情况/声明
  • *args/**kwargs
  • 装饰师
  • 描述符->属性/静态方法/类方法
  • 闭包
  • 生成器(收益语句)/迭代器
  • 支持一些神奇的方法:
    \uuuuuuuuuuuuuuuuuuu
    \uuuuuuuuuuuuuuuuu
    下一步,
    
    \uuuuuuuuu获取
    获取项目
    初始化
  • 支持list.append、set.add、list.extend等
  • (嵌套)列表理解/三元表达式
  • 相对进口
  • getattr()
    /
    \uuuu getattr\uuuu
    /
    \uuuu getattribute\uuuu
  • 函数注释(py3k)功能现在被忽略,但正在解析。 我不知道该拿他们怎么办。)
  • 类装饰器(py3k)特性也被忽略,直到我找到一个用途 凯斯,这对绝地武士不起作用)
  • 简单/常用
    sys.path
    修改
  • isinstance
    检查if/while/assert

我正在使用rope vim,它运行良好。再看看你有没有试过
或者仅仅是
?这些完成对我来说很好。与你的问题没有太大关系,但是为什么你使用getter而不是properties?你是否提出了这个问题的Bug修复,因为它很容易复制。是的,python是动态的,但是你也可以在程序运行时反省运行程序的一切,这将非常有助于完成任务。是的,运行你的程序来完成任务,听起来是个好主意。自从这篇文章发表后,我发现了绝地武士,另外两个人也给出了更好的答案。它可以进行静态分析,非常棒。我只是在表达解释语言的力量。我并不是建议实际运行代码以获得完整性。编译成目标代码后遍历AST肯定是提供功能的一种方式。只要模块加载过程不会产生不必要的副作用,即使加载模块来检查可用的模块也是一个不错的选择。这在某些语言中是合理的,但Python不是其中之一,因为加载任何代码都可以执行任意代码。
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