Есть ли способ получить python omnicomplete для работы с несистемными модулями в vim?

Единственное, что я могу получить python omnicomplete для работы, это системные модули. Я ничего не получаю от помощи в модулях в моих пакетах сайтов или модулях, над которыми я сейчас работаю.

6 Solutions collect form web for “Есть ли способ получить python omnicomplete для работы с несистемными модулями в vim?”

Я получаю завершение для своих модулей в своих PYTHONPATH или пакетах сайтов. Я не уверен, какую версию скрипта pythoncomplete.vim вы используете, но вы можете убедиться, что это последнее.

EDIT: Вот несколько примеров того, что я вижу в своей системе …

Этот файл (mymodule.py), я помещаю в каталог в PYTHONPATH, а затем в сайт-пакеты. Оба раза мне удалось получить снимок экрана ниже.

myvar = 'test' def myfunction(foo='test'): pass class MyClass(object): pass 

скриншот http://i437.photobucket.com/albums/qq96/jmcantrell/screenshot.png

Как только я сгенерировал ctags для одного из моих пакетов-сайтов, он начал работать для этого пакета, поэтому я предполагаю, что функция omnicomplete зависит от ctags для модулей, отличных от sys.

EDIT: Не совсем.

Вот проблема – плохое тестирование с моей стороны – omnicomplete WAS работает для частей моего проекта, только не в большинстве.

Проблема заключалась в том, что я работаю над проектом django, и для импорта django.db вам нужно установить переменную среды. Поскольку я не мог импортировать django.db, любой класс, унаследованный от django.db, или любой модуль, который импортировал класс, унаследованный от django.db, не завершился.

Просто наткнулся на это на Reddit Python сегодня вечером: PySmell . Похоже, что вы ищите.

PySmell – помощник по созданию IDE для python.

Он пытается статически анализировать исходный код Python, не выполняя его, и генерирует информацию о структуре проекта, которую могут использовать инструменты IDE.

Хотя важно отметить, что вы должны правильно настроить переменную окружения PYTHONPATH , в соответствии с предыдущим ответом, в Vim имеется заметная ошибка, которая предотвращает работу omnicompletion при сбое импорта . Начиная с Vim 7.2.79, эта ошибка не была исправлена.

Совет по устранению неисправностей: убедитесь, что модуль, который вы пытаетесь полностью закрыть, может быть импортирован VIM. У меня был синтаксически правильный Python, который VIM не понравился:

 :python import {module-name} Traceback (most recent call last): File "<string>", line 1, in ? File "modulename/__init__.py", line 9 class empty_paranthesis(): ^ SyntaxError: invalid syntax 

Случай-в-точке, удаляя скобки из моего определения класса, разрешил VIM импортировать модуль, а затем OmniComplete в этом модуле начал работать.

Я думаю, что вы после сценария pydiction . Он позволяет вам добавлять свои собственные материалы и пакеты сайтов для завершения omni.

В то время как вы на нем, добавьте следующее в свой файл python.vim …

  set iskeyword+=. 

Это позволит вам автоматически выполнять функции пакета, например, если вы введете …

  os.path. 

а затем [CTRL] [N], вы получите список функций для os.path.

Python - лучший язык программирования в мире.