Vim как IDE для разработки на Python
Не так давно я решил настроить текстовый редактор Vim для написания скриптов на Python. Выкладываю небольшую инструкцию под Debian/Ubuntu.
Устанавливаем Python 3.4 и pip3 (установщик модулей для Python)
После этого нужно убедиться, что Vim в вашей системе собран с поддержкой Python:
Если вывод будет примерно таким:
+cryptv +linebreak +python +viminfo
то значит поддержка Python имеется, если же нет, то нужно либо пересобрать/переустановить Vim с поддержкой Python, либо поставить пакет Vim-nox — расширенная версия Vim’a для работы в консоли, идет сразу с поддержкой Python’a.
Для Vim существует удобный пакетный менеджер, с помощью которого можно быстро устанавливать, обновлять и удалять плагины. Установим его:
После выполнение этой команды Vundle будет установлен в
Добавим в конфиг .vimrc следующие строки:
Строки вида Plugin ‘scrooloose/nerdtree’ представляют собой ссылки на эти плагины в интернете, которые впоследствии Vundle скачает и установит.
- NERDTree — навигация по директориям
- TagBar — навигация по классам/функциям/переменным
- vim-airline — строка статуса/состояния
- FixedTaskList — поиск в файле FIXME, TODO и т.п.
- conque-term — используем для вызова дебаггера
- vim-surround — автозакрытие тегов HML/XML/и т.п.
- vim-snipmate — сниппеты
- python-mode — рефакторинг, документация, дебаггер Python и т.п.
- jedi-vim — автодополнение для Python
- vim-jinja — поддержка синтаксиса шаблонов Jinja
Чтобы вышеперечисленные плагины установить, запускаем Vim и выполняем:
:PluginInstall
Этой командой мы сканируем кофигурационный файл .vimrc на наличие списка плагинов указанных в виде Plugin ‘ссылка_до_плагина’. После этого начнется скачивание и установка плагинов с github. Установленные плагины помечаются значком «+».
Еще пара полезных команд Vundle:
- :BundleClean — удалит все плагины, которые не прописаны в .vimrc.
- :BundleList — Просмотреть ссписок всех установленных плагинов.
Приведу еще несколько общих настроек (добавьте эти строки в конец конфига .vimrc):
Ссылка на полный файл конфига на BitBucket.
Я также прикрепил его как вложение к статье.
Далее нужно поставить pyvenv, для создания виртуального окружения:
Создаем каталог виртуального окружения в каталоге, где будут лежать .py -файлы (перед созданием каталог должен быть пустым):
после этого в данном каталоге создастся виртуальное окружение, появится бинарник Python3.4, pip3 и т.д. Чтобы активировать (запустить окружение), выполняем команду:
И, наконец, ставим ipython, для удобного запуска интерпретатора прямо в окне Vim (плагин Python-mode)
Несколько горячих клавиш, при работе с python-скриптами в нашем Vim:
- F3 — запуск дерева каталогов в левой части Vim
- F5 — запуск интерпретатора IPython
- F6 — запуск(выполнение) скрипта в нижней части окна Vim
После всех наших настроек мы получим примерно такой Vim:
Файл конфига .vimrc я хорошо документировал, все настройки с комментариями вы найдете в полном файле во вложении к статье или на BitBucket.
Статья получилась достаточно объемной, по мере каких-либо изменений/нововведений буду обновлять материал.
Жду ваших дополнений/замечаний в комментарии!
Ulric Wilfred’s wiki
Let the wiki begin.
Облако тегов
Дерево навигации
Системные страницы
Добавить страницу
Введение
Редактор Vim наиболее известен среди разработчиков в системах Unix — конкурент emacs, что-то вроде консольного IDE — этот редактор при должной сноровке и настройке (мне кажется, сноровке несколько меньшей и настройке более очевидной чем в emacs, но у последнего также есть мощная мультифункциональность — выбор за программистом) способен убыстрить и упростить многие процессы на этапах разработки не в ущерб таким удобствам как, например, авто-дополнение и навигация по проекту. Однако, если вы собираетесь использовать его для разработки на Python со всеми подобными удобствами — потребуются некоторые усилия: а именно, перекомпиляция…
Приведу несколько ссылок по теме:
- Vim How-To — Работа в vim. Небольшое, но грамотное, вводное руководство. (полное содержание, содержит справочник по командам)
- Набор изображений для быстрого и наглядного изучения сочетаний клавиш. (англ.)
- Статья по использованию vim на Хабрахабре
- Настройка Vim для работы с Python — статья с подробным рассмотрением настройки и упоминанием всех необходимых дополнений
- Компилирование (g)Vim для Windows — статья, послужившая основой для написания той, которую вы читаете. (англ.)
- Альтернативная статья на ту же тему — более краткая, но о Python 2.5
- Некоторые заметки о работе c Python в редакторе Vim. (англ.)
Версии
Компиляция производилась с использованием [g]Vim 7.1, Python 2.5.2, Tcl 8.5.1, Cygwin 1.5.25-11 на Windows XP SP2, но сценарий при этом должен быть насколько возможно независим от версий.
Установка необходимых программ
Итак, подготовка. Нужно заранее установить сам язык — Python (если он не установлен) и, если вы собираетесь использовать Tcl — соответственно Tcl/Tk (с некоторого времени язык стал владением ActiveState: можно скачать бесплатный ActiveTcl). При компиляции используются динамические библиотеки соответствующих языков.
Для работы с архивами и собственно компиляции нам понадобится эмулятор Unix-утилит под Windows — это Cygwin. В нём существуют и компилятор gcc, и необходимые для компиляции файлы (есть путь с компилятором Borland, но он несколько сложнее). Файл установки работает немного непривычным образом — скачивая и файлы установки и пакеты уже после вашего выбора (если вы выберете установку из Интернет, которая в первый раз в любом случае необходима) — при этом для обновления или до/переустановки пакетов вы, возможно, будете возвращаться к инсталлятору довольно-таки часто. Тем не менее, чтобы установить минимальный набор необходимых для нашего случая вещей — нужно отметить лишь пару пунктов: после выбора способа установки (на данный момент наиболее стабильно для меня работало зеркало ftp://mirror.switch.ch (хотя буквально в эти секунды его исключили из списка официальных зеркал): если будут ошибки закачки — вас снова вернут к выбору зеркала) в списке выбора пакетов убедитесь что вы находитесь в режиме Category (переключив его, если надо, кнопкой View вверху), рядом с пунктом All, несколько раз потыкав надпись Default поменяйте её на Uninstall (чтобы не устанавливать ненужных пакетов) и выберите следующие пункты — Utils/patch, Devel/gcc-g++, Devel/make, System/man и Devel/gcc-mingw (последний, возможно, будет уже заранее выбран, значит они уже исправили одну проблему, которая отражалось на удачной компиляции 🙂 ) — при этом у вас автоматически станут выбраны некоторые другие относительно необходимые пакеты (можно перепроверить): Shells/bash, Utils/bzip2 и Devel/mingw-runtime (последний, тем не менее, безмерно важен). Также советую установить Web/wget для того, чтобы облегчить в дальнейшем закачку патчей. Всё, можно жать установку.
Затем нужно, собственно, установить gVim. Можно заранее его настроить под Python, руководствуясь статьей, упомянутой выше — тогда при попытке подключения авто-дополнения Vim будет сообщать о необходимости перекомпиляции с ключом +python, что мы и планируем сделать.
Подготовка
Запустите cmd и убедитесь, что в переменных окружения USERNAME и USERDOMAIN содержатся ваше имя и имя вашего компьютера и домена соответственно (echo %username%@%userdomain%), а PATH содержит путь к bin-каталогу Cygwin. HOME может указывать на ваш каталог “Мои документы” (туда, где находится ваш файл настройки vim — vimrc), а VIM — на месторасположение установленного, рабочего редактора vim, желательно в формате 8.3 (напр.: C:\PROGRA
1\VIM). Значения переменных можно изменять в диалоге, расположенном здесь: Мой компьютер → Свойства → Дополнительно → Переменные среды.
Не менее, а даже более нам необходимы исходники, поэтому скачиваем их для соответствующей установленной версии (будьте внимательны — именно исходники для Unix, даже при компиляции под Win32) (по предыдущей ссылке также можно скачать файлы для отладки, но отлаживание в этой статье не рассматривается и в их присутствии нет необходимости). Поверх этих исходников нужно добыть дополнение для Windows (-extra) и файлы языков (-lang) соответствующей версии отсюда.
Также, если вы используете стабильный релиз и хотите заодно установить новейшие патчи — за файлами патчей обращайтесь сюда (исправьте номер версии в ссылке, если нужно). Здесь есть некоторая проблема, поскольку файлы патчей упаковываются в один только при достижении сотни (001-100, 101-200 и т.д.), поэтому если их, например, 275 — последние 75 файлов придётся закачивать руками или написав batch-скрипт с использованием telnet. Однако, у нас уже установлен cygwin, поэтому можно создать .sh-скрипт, выполняющий те же функции через wget, выглядеть это может примерно так:
Теперь займёмся расположением исходников в виде, удобном для компиляции.
Архивы с исходником, -extra и -lang нужно распаковать (по очереди, с заменой более старых файлов) в какой-либо каталог с сохранением структуры (пусть в нашем случае это будет C:/devel/vim-src/vim71), в нём должны содержаться каталоги /doc, /nsis, /src, /farsi и т.д.. В распаковке вам поможет или bzip2 из Cygwin, или встроенный архиватор файлового менеджера Total Commander или архиватор 7-zip или любой другой архиватор, поддерживающий архивы .tar.gz :).
В подкаталог /runtime можно положить файлы .vim, каталоги /doc и /plugins из рабочей версии вашего редактора vim — тогда они будут пропатчены соответственно, если вы выбрали путь компилирования с патчами. Патчи при этом можно положить в каталог /patches.
Компиляция
Для того, чтобы установить патчи, нужно выполнить над каждым из них команду patch из набора Cygwin, предварительно распаковав архивы файлов с сотнями патчей. В этом случае я воспользовался .bat-файлом вместо .sh скрипта (номера патчей, конечно, нужно, поправить на соответствующие вашему набору):
Этот файл нужно положить в каталог /patches и после корректировки выполнить (убедитесь, что вся описанная выше структура дерева исходников сформирована): в корне исходников будет создан файл patching-src.log, в котором можно проследить результаты прошедшего патчинга. Если утилита patch не была найдена, проверьте PATH на наличие пути к Cygwin. Если некоторое (небольшое) количество файлов не было найдено и пропатчено — можно сильно не беспокоится, это в основном файлы для XWindow-версии.
Теперь можно перейти непосредственно к компиляции из консоли Cygwin. Для этого необходимо удачно выполнить лишь три команды — перейти в каталог с исходниками (cygwin монтирует ваши диски в точке /cygdrive/: подставьте корректные пути к вашей установке Python и Tcl а также их корректные версии, а если вы не компилируете версию для Tcl — просто уберите соответствующие параметры) и создать файлы vim.exe (консольная версия) и gvim.exe (GUI-версия):
На предупреждения и даже некоторые ошибки, если они относятся к Python или Tcl и если процесс продолжается, а в результате .exe-файлы созданы, можно не обращать внимания. Если всё завершилось удачно, то в каталоге /src вы найдёте оба .exe-файла. Сделайте бэкап существующих файлов в рабочем, установленном vim (например, vim.exe.bak и gvim.exe.bak) и замените их только что скомпилированными. Если вы применяли патчи, то верните обратно *.vim файлы, каталоги /doc и /plugins из каталога /runtime, предварительно сделав бэкапы и для них и заменяя старые версии. После этого запустите gVim и vim из папки рабочего vim, проверьте версию и опции компилирования там же на присутствие +python — в большинстве случаев всё должно сложиться удачно.
Возможные ошибки
В процессе компилирования мне встретилось две ошибки: cannot exec ‘cc1’: No such file or directory и ld: cannot find -lgcc. Обе они известны авторам Cygwin, однако в моём случае в скачанных мной версиях они ещё не были решены. Первая временно решается предварительным (перед компиляцией) добавлением каталога с исполняемым файлом cc1.exe в локальный PATH cygwin:
Вторая решается так, как должна была решаться и первая — установкой Devel/gcc-mingw (её обещали сделать автоматической при выборе gcc в будущем) при установке Cygwin. При этом важно установить пакеты одновременно, поэтому если ошибка всё равно появляется — попробуйте выбрать режим Reinstall в установщике Cygwin в том месте, где до этого вы выбирали режим Uninstall и установите Cygwin заново.
Настройка Vim для Python
(Upd.)
На основе этой статьи я создал пак (взять можно здесь) из последних версий упомянутый в ней плагинов (Project, PythonComplete, NERD_Commenter, VCSCommand, RunScript и TagList плюс, поверх — PyDiction) + минимальной настройки (в ftplugin/python.vim, практически идентичный соответствующему в статье (изменённая функция TabWrapper + другой способ подключения словаря) — только общепринятые стандарты, omni completion повешен на Tab). Содержимое требуется распаковать в каталог \vimfiles. Для плагина taglist потребуется скачать ctags отсюда, и распаковав полученный архив в некоторый каталог, добавить путь к нему в переменную окружения PATH. Затем нужно запустить vim и выполнить команду:
После этого можно будет использовать команду :help для получения документации по соответствующему плагину.
Обычное автодополнение при использовании настроек из пакета работает по Tab, дополнение по контексту (omni completion) — по Ctrl+Enter и Ctrl+Space, а дополнение по ключевым словам и модулям — по Ctrl+Tab (при большом количестве вариантов словарь загружается относительно долго, поэтому намеренно установлено не очень удобное сочетание).
Для того, чтобы вставлять предлагаемые по спецификации строки в заголовки python-файлов при создании, добавьте нижеприведённый код в файл \_vimrc (строка filename добавлена для демонстрации возможности добавления имени файла):
…Вот теперь можно c чрезвычайным удобством программировать на Python.