Автозаполнение Vim, Python и Django (pysmell?)

Кто-нибудь знает, как настроить автоматическое завершение, чтобы хорошо работать с python, django и vim?

Я пытаюсь использовать pysmell, но я не могу настроить его правильно (или, может быть, я не знаю, как это работает). Прямо сейчас я запускаю pysmell в каталоге django (я использую соединительную линию) и перемещаю полученные теги в свою директорию проектов, а затем запускаю pysmell в каталоге проекта. Тем не менее, Vim не поднимает теги django, и они не получают автоматическое завершение.

Кто-нибудь знает, как настроить автоматическое завершение в vim, чтобы он завершил длинные функции django (например, get_object_or_404), а также классы / функции в моем собственном коде? Я ткнулся в google, но не нашел хороших ресурсов.

Благодарю.

  • Как отправить статус в строку состояния VIM после вызова пользовательской функции VIM (Python)
  • Эквивалент перемещения% для файлов Python
  • Vim не скомпилируется с python на OS X
  • Вложение reStructuredText в Python docstrings
  • Выделение непревзойденных скобок в vim
  • Vim's Omnicompletion с Python просто не работает
  • сортировать по названию в vim
  • Как стать продуктивным с помощью Vim / Emacs
  • 5 Solutions collect form web for “Автозаполнение Vim, Python и Django (pysmell?)”

    Прежде всего, благодарю вас за то, что вы задали этот вопрос, поскольку это заставило меня понять это сам, и это здорово!

    Вот страница, которую я использовал в качестве ссылки: выпущен PySmell v0.6: orestis.gr

    1. Установите PySmell с помощью команды setup.py install .
    2. Создайте файл PYSMELLTAGS для django, перейдя в каталог site-packages/django и запустив: pysmell . -o ~/PYSMELLTAGS.django pysmell . -o ~/PYSMELLTAGS.django
    3. Скопируйте этот файл в каталог проекта, а затем pysmell . для создания файла проекта PYSMELLTAGS
    4. Убедитесь, что pysmell находится в вашем PYTHONPATH ( export PYTHONPATH=${PYTHONPATH}:/path/to/pysmell/ )
    5. Выполнить vim ( vim . )
    6. Источник pysmell.vim ( :source /path/to/pysmell/pysmell.vim )
    7. Задайте команду автозаполнения ( :set omnifunc=pysmell#Complete )
    8. Введите ^ x ^ o в автозаполнение и он должен работать

    Я понимаю, что это не устойчивое решение, но вы должны иметь возможность использовать его для начала работы, чтобы он всегда работал (например, добавьте экспорт в ваш .bashrc, добавьте источник: .vimrc, setup autocmd FileType python set omnifunc=pysmell#Complete и т. д.)

    Дайте мне знать, если этого достаточно, чтобы вы начали. Это сработало для меня!

    Редактировать Я просто добавил это в мой .vimrc и до тех PYSMELLTAGS PYSMELLTAGS.django файлы PYSMELLTAGS & PYSMELLTAGS.django находятся в моем корневом PYSMELLTAGS.django проекта, он отлично работает без какой-либо другой работы:

     python << EOF import os import sys import vim sys.path.append("/usr/local/python/lib/python2.5/site-packages") EOF exe ":source ~/src/pysmell/pysmell.vim" autocmd FileType python set omnifunc=pysmell#Complete 

    alt text http://blog.dispatched.ch/wp-content/uploads/2009/05/vim-as-python-ide.png

    Вы можете настроить VIM с помощью буферов, отображения буфера, автоматического завершения, даже отображения Py Doc.

    Ну вот

    Как я писал в других местах, у меня развился джедай. Я действительно думаю, что это намного лучше, чем все существующие решения (даже PyCharm).

    https://github.com/davidhalter/jedi-vim

    Он построен на pythoncomplete и намного более мощным!

    Он работает для сложного кода: завершение

    И имеет дополнительные возможности: введите описание изображения здесь

    Существует список всех возможных возможностей:

    • поддержка встроенных функций / классов
    • сложные структуры модулей / функций / классов
    • игнорирует синтаксические и отступы
    • множественные доходности / доходности
    • назначение кортежей / индексирование массива / индексация словаря
    • Исключения / с заявлением
    • * args / ** kwargs
    • декораторов
    • дескрипторы -> свойство / staticmethod / classmethod
    • укупорочные
    • генераторы (оператор выписки) / итераторы
    • поддержка некоторых магических методов: __call__ , __iter__ , __next__ , __get__ , __getitem__ , __init__
    • поддержка list.append, set.add, list.extend и т. д.
    • (вложенные) списки / тройные выражения
    • относительный импорт
    • getattr() / __getattr__ / __getattribute__
    • функциональные аннотации (функция py3k, игнорируются прямо сейчас, но анализируются. Я не знаю, что с ними делать).
    • класса (функция py3k, тоже игнорируются, пока не найду вариант использования, который не работает с Jedi)
    • простые / обычные изменения sys.path
    • isinstance проверяет, если / while / assert

    Мне повезло с такими буйными катаксами.

    Я использую этот макрос в своем vimrc:

     выполнить 'map:! / usr / bin / exuberant-ctags -f'. & tags. '  --recurse '. $ _ P4ROOT.'  '
    

    Вы захотите немного изменить его, чтобы он включал ваш каталог python / site-packages / django /, а также ваш собственный код.

    Затем нажмите F2 внутри vim, чтобы обновить теги, и используйте регулярные привязки тегов vim для навигации.

    Сегодня вам не нужны специальные расширения для автозаполнения django в vim. Убедитесь, что у вас есть vim с поддержкой python. Чтобы проверить его, введите xterm:

    vim –version | grep python

    вывод:

    + python -python3 + quickfix + reltime + rightleft -ruby + scrollbind + sign … …

    Чтобы сделать работу автозаполнением, добавьте эти строки в свой .vimrc:

    autocmd FileType python set omnifunc = pythoncomplete # Complete

    if has ("python")

    python import sys, os

    python sys.path.append ('/ home / sergey / workspace / django')

    python os.environ ['DJANGO_SETTINGS_MODULE'] = 'djangoProject.settings'

    ENDIF

    где:

    • sys.path.append – путь к каталогу рабочей области django
    • djangoProject – это название вашего проекта django, который происходит сразу после '/ home / sergey / workspace / django'

    Наконец, сохраните его и перезапустите vim. Теперь, после «.», Вы нажимаете по умолчанию ctrl-x ctrl-o, чтобы получить свой автозаполнение.

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