Завершение Vim Python

У меня проблемы с завершением 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), если строка импорта закомментирована. Но там есть import numpy.random, тормозит завершение. Примечание: этот импорт работает нормально, когда я запускаю код.

Каковы предварительные условия для завершения Python? Что происходит и что мне делать, чтобы завершить работу для Python.

Поскольку я (относительно) новичок в Vim, приветствую любые предложения.

РЕДАКТИРОВАТЬ: Похоже, проблема в использовании формы a.b при импорте. Если я делаю из numpy import random, все в порядке. Если это достаточно легко исправить, я бы тоже хотел получить a.b от для работы. Но теперь, когда я знаю, как это обойти, это не так важно.

Есть ли более необычная проблема, подобная этой, чтобы я знал, что произойдет в будущем?

28
задан Goran Novosel 17 August 2011 в 19:35
поделиться