Использование vim как мощного ide для python

Обновлено: 05.07.2024

Ребята! Ну вы чего! Только VIM, только скорость и решительность!

Установка

*NIX / Linux

В вашем *NIX / Linux, скорее всего уже есть vim. Проверяем:

Вывод должен быть похож на этот:

Что нас здесь интересует? Поддержка python3 (python2, наверное, уже не так актуален).

Если vim не установлен, установим:

sudo apt update

sudo apt install vim

Если vim установлен, но не поддерживает python3, собираем из исходников:

Теперь проверим версию python, используемую в vim:

  • vim
  • откроем интерпретатор :!python или :!ipython (если пользуетесь)

Да, сейчас 2.7, исправим это позже, с помощью виртуальных окружений.

Вероятно, дальше будет немного проще, если открыть мой .vimrc.

Плагины VIM

Плагины нужны, чтобы превратить vim в IDE.

Менеджер плагинов

Существуют разные плагин менеджеры. Хороший и популярный вариант - Vundle. Скопируем в директорию для расширений vim:

Вероятно, у вас уже есть .vimrc в домашней директории. Если нет, создадим:

Копируем(пока, можно сделать это через контекстное меню):

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

Например, NERDTree, file browsing плагин - открывает в отдельном вертикальном split’е дерево файлов и директорий.



При установке появится окно установщика и + напротив установленного плагина.

Чтобы удалить - уберите Plugin 'scrooloose/nerdtree' и выполните :PluginClean . Выше небольшой help.

В общем, всё это справедливо для большинства vim плагинов.

Добьем вопрос с NERDTree и установим плагин NERDTreetabs для работы в разных вкладках. По аналогии с NERDTree добавляем в

Мы, все ещё, не вышли из vim. Проверим список установленных плагинов - :PluginList , сохраним и выйдем :wq!

Кстати, можно выполнять команды Vundle из терминала, например, так:

vim +PluginInstall или vim +PluginList


Key combinations

Надо, надо, ребята, потратить свое время на изучение. Свои основные кнопки написал в самом низу страницы.

Split Layouts

Можно открывать файлы в вертикальном и горизонтальном сплитах, а в этих сплитах открывать новые сплиты.


Настроим зоны для новых сплитов (новые вертикальные будут открываться справа, горизонтальные - внизу):

Настроим навигацию между сплитами:

nnoremap переназначает одну комбинацию клавиш на другую, при работе в Normal Mode. Например, было <Ctrl+W><Ctrl+J> , стало <Ctrl+J> . При этом <Ctrl+W> также будет работать. Подробнее

Code Folding

Полезная фича - сворачивание кода. Сворачивает до ближайшего whitespace на основе отступов (foldmethod=indent). Выглядит как-то так:


Добавляем в наш .vimrc:

По умолчанию, работает по комбинации za . Меняю на пробел:

Чтобы код сворачивался аккуратнее лучше установить какой-нибудь плагин, добавляем:

Python indentation

Для корректного code folding и соответствия PEP 8 настроим отступы и длину строки

Autoindent не всегда будет работать корректно, но это лечится плагином (устанавливаем через Vundle):

Flagging Unnecessary Whitespace

Лишние пробелы в коде лучше сразу удалять. Создадим флаг и подсветим красным


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

Можете выбрать подходящий вам вариант обработки пробелов здесь

UTF-8 Support

Для работы с Python3 Vim должен уметь кодировать utf-8. Добавим в .vimrc:

Virtualenv Support

То, что вам обязательно нужно - виртуальные окружения.

Про установку виртуальных окружений в Python:

По умолчанию, Vim ничего не знает об используемом виртуальном окружении.

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

Но это не всё. Если у вас уже есть виртуальные окружения, то переключаться между ними можно внутри vim, вручную, с помощью плагина vim-virtualenv.

Установим через Vundle:

Теперь, запустим виртуальное окружение:


Auto-Complete

С недавних пор пользуюсь автодополнением.

Использование плагина YouCompleteMe не принесло мне много радости. Но это субъективно.

Есть проблемы и для решения, как правило, предлагают этот рецепт.

Он универсален, работает как с Jedi , так и с Microsoft PLS (и то, и другое - это Language Server, еще поговорим об этом). Умеет в IDE capabilities, например, покажет вам аннотации типов или __doc__ объекта. Удобно настраивать, опций - огромное множество.

Jedi - это Language Server, фоновый процесс, который будет анализировать наш код. С помощью coc.nvim , будем просить его дополнить код, выполнить форматирование или рефакторинг. Здесь хорошо и кратко про Language Server Protocol (LSP) .

Вариантов установки много, ставим через pip в нужном виртуальном окружении (про установку виртуальных окружений, а еще чуть выше, в Virtualenv Support):

Кстати, там же, в документации, есть ссылка на клиент для Jedi - JEDI-VIM. Можете попробовать как альтернативу coc.nvim .

Теперь установим coc по инструкции из Wiki. У нас, конечно, же vim 8 (проверить можно через vim --version ), поэтому воспользуемся встроенный пакетным менеджером:

Здесь же, в .vimrc , с помощью встроенного менеджера, установим coc-python :

Откроем какой-нибудь скрипт, и, поскольку мы уже в нужном виртуальном окружении(настроили раньше, в Virtualenv Support), переключим интерпретатор на работу с Jedi в этом же окружении. Делается это снова встроенным менеджером:

В появившемся окне выбираем виртуальное окружение, куда ранее установили Jedi . Вот в картинках, до момента выбора окружения:



С помощью CocCommand можно настраивать много всего. Фактически, мы правим конфигурационный файл через интерфейс встроенного менеджера.

Посмотрим на интерфейс на примере функции print :


Если coc.nvim нужно отключить:

Теперь добавим полезного в наш .vimrc для работы с coc :

Смотрим, как это выглядит (ставим курсор на print , жмем K ):


Добавим аннотации в

Смотрим на том же примере (ставим курсор на print , жмем gd ):


У проекта отличная Wiki, если вдруг.

File Browsing

Плагины nerdtree и vim-nerdtree-tabs мы уже установили.

Давайте добавим в конец .vimrc строку: let NERDTreeIgnore=['\.pyc$', '\

NERDTree будет игнорировать .pyc

Если у вас есть вопрос по работе NERDTree, скорее всего он уже решен - F.A.Q.

Команды для работы с vim-nerdtree-tabs описаны в Commands and Mappings

Добавим в .vimrc возможность открытия NERDTree по <F3> :

Syntax Checking/Highlighting

Плагин для проверки синтаксиса:

Линтер для PEP 8:

Включаем подсветку синтаксиса:

Поддержка markdown

Ну, а почему нет?

Подсветка синтаксиса, превью - все, что нужно.

Смотрим топ плагинов здесь.

Устанавливаем уже знакомым способом, через Vundle :

Добавим для vim-instant-markdown доступные настройки в наш

А для vim-markdown добавим подсветку YAML, JSON, разрешим открывать ссылки на .md в новых вкладках:

Ну и для удобства настроим отсупы аналогично Python indentation. Мы уже делали это ранее, теперь только добавим *md и *markdown :

Например, теперь, помимо подсветки, можно открыть в отдельном сплите все заголовки вашего markdown-файла и переключаться между ними:


А превью будет сразу открываться как новая вкладка в браузере:


Color Schemes Switching

У меня много схем оформления vim и возможность переключения между ними по <F8> .

Для начала скопируем в

/.vim/colors/ схемы оформления. Возьмем их, например, здесь и здесь.

В качестве постоянной схемы я использую dogrun . В .vimrc добавить схему как постоянную, можно так:

Добавим схемы оформления в vim:

Добавим возможность переключения по <F8> , скопировав этот скрипт в

Чтобы отобразить текущую схему, можно использовать :SetColors .

Super Searching

Расширенные возможности поиска в vim будут добавлены вместе с плагином ctrlP

Устанавливаем обычно, через Vundle:

Не забываем :PluginInstall

Status bar with vim-airline

Полезнейшая в работе вещь - статус бар. Есть powerline, но я использую vim-airline

Добавляем в .vimrc и устанавливаем через Vundle:

Теперь, vim будет выглядеть так:


vim-airline интегрируется со многими плагинами, например, с ctrlP , который мы уже установили.

В vim-airline можно добавить, например, наименование используемого виртуального окружения, что мы и сделали.

Git Integration

Как по мне, лучший плагин для интеграции vim с git - это fugitive.vim, хотя бы, по той причине, что он дублирует уже привычный набор команд git и не требует особого изучения.

Устанавливается, как обычно, через Vundle:

Добавим в статус бар:

Для работы с git есть плагин vimagit, но мне он кажется менее удобным.

Для отображения статуса git-репозитория в NERDTree попробуйте этот плагин

Line Numbering

Нумерация строк будет отображаться в статус баре, который мы установили ранее. Это удобно.

Но, если вы хотите отображать нумерацию строк в vim, добавьте в .vimrc:

PasteToggle

Иногда вам будет полезна опция :set paste . Используется до вставки скопированного кода “как есть”, без autoindent. Актуально при работе в insert mode.

Копируем код, переходим в insert mode, включаем pastetoggle (F2), вставляем код, отключаем pastetoggle(F2).

Поддержка black и запуск python

Black - популярный форматтер python-кода.

Устанавливаем глобально, через pip:

pip install black

На этой же странице есть плагин для vim.

Применять black, достаточно, просто, поэтому отдельным плагином я не пользуюсь. Основные команды black:

А в .vimrc добавим hotkey на <F9> для запуска black как стороннего инструмента:

Теперь добавим возможность сохранения и запуска python-интерпретатора на <F5> :

Вкладки в vim

Добавим клавиши для переключения вкладок в vim:


Switching Buffers

Для переключения добавим hotkey на <F7> :

History

Добавим полезную настройку - разрешим хранить историю после выхода из файла:

Hotkeys

i - insert - режим ввода/редактирования

esc - выйти из режима редактирования/визуального режима (можно применять нужное кол-во раз)

dw - удалить слово

dd - удалить строку

d$ - удалить всё от текущего месторасположения курсора до конца строки

d^ - удалить всё от текущего месторасположения курсора до начала строки

:15 dgg - прыгнуть на 15 строку и удалить всё, начиная с 15 строки, до начала файла (dG - до конца файла)

dt' - удалить все символы в строке от текущего месторасположения до символа одинарной кавычки (можно использовать любой символ)

5dd - удалить 5 строк

5dw - удалить 5 слов

Символ удаления d можно комбинировать с поиском. Например, чтобы удалить все от курсора до конкретного слова, жмем d , открываем поиск с помощью / , пишем слово, до которого удаляем.

yy - скопировать строку (никто не отменял копирование через контестное меню)

yw - скопировать слово

10yy - скопировать 10 строк

p - вставить после курсора (не всегда удобно)

P - вставить до курсора

:q - выйти из файла

:q! - выйти из файла жестко, без сохранения изменений

:w - сохранить файл

:wq - сохранить файл и выйти

ctrl+V - перейти в визуальный режим

u - отменить действие (undo)

ctrl+R - return или undo undo (повторить действие)

hjkl - передвижение по vim

^ - начало строки (вернуться к первому не пустому символу в строке)

0 - вернуться в самое начало строки

$ - вернуться в конец строки

A - вернуться в конец строки и открыть режим редактирования

I - вернуться в начало строки и открыть режим редактирования

o - прыгнуть на следуюущую строку и перейти в режим редактирования

w - передвижение на одно слово вперед

W - передвижение от пробела к пробелу (через слово)

b - передвижение назад, от слова к слову

B - передвижение назад, от пробела к пробелу

gg - прыгнуть в начало файла

G - прыгнуть в конец файла

30G - прыгнуть на нужную строку (для gg аналогично)

:55 - передвинуть курсор на 55 строку

ctrl+D - листать постранично вниз

ctrl+U - листать постранично вверх

zt - при нахождении на строке, которая расположена в нижней части терминала, поднимаем эту строку на самый верх

zz - аналогично предыдущему, но поднимаем строку на середину

/ - поиск (здесь лучше сразу обратить внимание на инкрементальный режим, т.е. поиск в реальном времени). В поиске есть история - работает нажатием вверх или вниз (по аналогии с :). Для передвижения по результатам поиска жмем n и N

? - поиск в обратную сторону, по аналогии с /

. - повторить предыдущую команду

:s/чтозаменить/начтозаменить - замена в строке

:%s/чтозаменить/начтозаменить/ - замена во всем файле (если слово в строке встречается дважды, добавьте g, либо установите set gdefault

>> - сдвинуть строку вправо

<< - сдвинуть строку влево

12> - сдвинуть 12 строк вправо (аналогично влево)

:vs имя файла - вертикальный сплит

:sp - горизонтальный сплит

:vertical resize30% - изменить размер текущего сплита

:resize - изменить размер для горизонтального сплита

za - свернуть код

vim -p file1 file2 file3 - открыть несколько файлов в разных вкладках

:tabedit имя файла - открыть файл в новой вкладке

:tabn (можно с номером вкладки ) - перейти на следующую вкладку

:tabp - перейти на предыдущую вкладку

:tabc - закрыть вкладку

:tabfirst - перейти на первую вкладку

:tablast - перейти на последнюю вкладку

:tabs - открыть список доступных вкладок

:tabl - прыгнуть на последнюю открытую вкладку

:tab split - скопировать содержимое текущей вкладки в новую вкладку и перейти на неё

image


Данная статья будет посвящена настройке vim, в которой я поделюсь своим «скромным» пониманием того, каким должен быть текстовый редактор, чтобы в нем было удобно/приятно/легко (нужное подчеркнуть) писать код также, как это сейчас возможно во всевозможных IDE типа PyCharm, SublimeText и т.п.
Весь процесс постараюсь описать как можно более подробно, чтобы вопросов по мере чтения для начинающих осваивать vim возникало как можно меньше.

Предыстория
  • достаточное количество на хабре статей по vim
  • большое количество существующих плагинов
  • преимущественно, разработчики на Python занимаются написанием кода под Linux (хотя vim — кроссплатформенный)
  • собственное любопытство
Подготовительный этап
  1. Vim версии 7.4 (получить нужное можно либо скачиванием из репозиториев, либо сборкой вручную)
  2. Python 2.7 (с установленным pip)
  3. Клиент для работы с git
Настройка

Самое первой проблемой для любого новичка, который решает обуздать vim, является vimscript. Vimscript — это скриптовый язык, предназначенный для vim. На нем мы будем описывать используемые плагины, горячие клавиши и все тому подобное, чтобы обеспечить себе простую и легкую работу в vim. Для ознакомления советую посетить вот этот и этот сайты. Там достаточно неплохо все описано, что, где, как, и почему.

Первым делом стоит рассказать о том, что конфигурационный файл vim находится в домашнем каталоге пользователя (

/) и называется .vimrc. В нем-то и будут расписываться моменты относительно того, какие шрифты, цветовая схема, хоткеи и т.п. будут использоваться.

Во-вторых, при настойке текстового редактора, иногда будет необходимо заходить в каталог .vim (это скрытый каталог, и он расположен также в домашнем каталоге юзера), в который будут помещен ряд необходимых файлов, рассортированных по каталогам.
Какие включает в себя подкаталоги исходный каталог .vim? Примерно такие:
.vim
|____after
|____autoload
|____colors
|____doc
|____ftplugin
|____indent
|____plugin
|____scripts
|____syntax

  • colors — для цветовых схем/тем
  • indent — сюда будет скидывать файлы для работы с тегами HTML/XML и т.п.
  • scripts — для скриптов
  • syntax — файлы синтаксиса

До начала установки и работа с менеджером пакетов пропишем в консоли:

Менеджер плагинов
  • настраивать и устанавливать плагины, указанные в. vimrc
  • обновлять плагины при необходимости
  • удалять неиспользуемые плагины


После выполнение этой команды Vundle будет установлен в

Теперь добавим следующую часть в свой новосозданный .vimrc если его еще нет:

  • NERDTree — навигация по файловой/директориям
  • TagBar — навигация по классам/функциям/переменным
  • vim-airline — строка статуса/состояния
  • FixedTaskList — поиск в файле FIXME, TODO и т.п.
  • conque-term — используем для вызова дебаггера
  • vim-surround — автозакрытие тегов HML/XML/и т.п.
  • vim-snipmate — сниппеты
  • python-mode — рефакторинг, документация, дебаггер Python и т.п.
  • jedi-vim — автодополнение для Python
  • vim-jinja — поддержка синтаксиса шаблонов Jinja

Эта команда сканирует файл .vimrc на наличие списка плагинов прописанных в виде Plugin 'ссылка_до_плагина' .
Для того, чтобы запустить установку набора плагинов, заходим в vim/gvim и прописываем :PluginInstall . Придется немного подождать, поскольку каждый плагин, указанный выше в конфиге, будет скачан с githuba либо еще откуда-то и настроен до установок «по умолчанию», подождите пару минут. Каждый выкачанный и настроенный плагин отмечается как "+". Как только увидите, что все из списка подсвечены "+" — значит, все готово. И для дальнейшего использования необходимо будет перезапустить vim. Однако на этом все еще не оканчивается статья — все необходимо «подкрутить», чтобы работать в vim'е было комфортно.

Общие настройки vim'а

Эти настройки для меня являются базовыми. Тут я указываю свои предпочтения относительно парочки плагинов, размера шрифтов, цветовой схемы, отображаемых элементов и т.п.
Добавьте эти строчки в конец своего .vimrc файла:

Python-mode
  • рефакторинг
  • автодополнение
  • работа с дебаггером
  • автофикс PEP8 ошибок
  • и многое-многое другое.
Jedi-vim

Очень полезный плагин, предоставляющий отличные возможности автокомплита, go to definition, и т.п.
В своем конфиге добавьте в конец этот фрагмент:

Этой строчкой я отрубаю в автокомплите выбор первой строки из списка выбора метода/библиотеки/класса автокомплита. Это связано с тем, что достаточно часто я выбираю не первую строку из нее, а автоматический выбор раздражает.

После настройки jedi-vim получаем отображение документации по функции

и добротный автокомплит по аргументам функций

Хоткеи

Тут сложно что-либо посоветовать. У всех различное понимание того, какие хоткеи нужны, а какие-нет. Могу лишь сказать, что для желающих, найти/написать необходимые кусочки vimscript, переопределяющих поведение стандартных горячих клавиш — очень много.
Добавьте этот фрагмент в конец конфига:

Отступы, табы, пробелы для разных языков

Это связано с тем, что в том же Python табы не рекомендуется к использованию. Поэтому будем заменять их на пробелы. Один таб = 4 пробелам. Плюс ко всему необходимо помнить, что всегда нужно сделать переход на следующую строку + отступ, чтобы было соответствие операторам for/if/while/и т.п.
Для других языков предостаточно будет указать размер Таба, и замены их на пробелы.
Добавьте этот фрагмент в конец своего конфига:

Подведение итогов

После прохождения столь длительного процесса настройки у нас получился достаточно гибкий инструмент для работы с Python. При этом, последующая установка, на другие ПК будет представлять только доустановку необходимых библиотек, переноса соответствующего конфига и установку плагинов.

После настройки мы получим примерно такой vim:

В режиме работы с HTML/JavaScript/XML будет все выглядеть примерно так:

Если кому-либо нужен больший функционал (например поддержка автокомплита для любых иных языков), то могу посоветовать лишь поискать необходимые плагины на GitHub'е или на офицальном сайте сайте vim'a.


Vim это хорошо настраиваемый текстовый редактор, часто использующийся в качестве среды разработки Python. Само название «Vim» расшифровывается как Vi Improved (улучшенный Vi; Vi — текстовый редактор в UNIX). Поклонники этого редактора среди его сильных сторон обычно называют обилие плагинов, Vimscript и логичный язык команд.

Чем хорош Vim в плане разработки на Python?

Согласно философии Vim, разработчики куда более продуктивны, если им не приходится отрывать руки от клавиатуры. Код должен естественным образом перетекать из их мыслей на экран через пальцы и клавиши. Использование мыши и прочих устройств замедляет преобразование мыслей в код.

В редакторе Vim очень логичный и структурированный язык команд. Когда новичок приступает к ознакомлению с редактором, названия команд могут показаться ему непонятными и, как следствие, трудными для запоминания. Но все они строятся и комбинируются, подчиняясь определенным правилам. Когда вы усваиваете эти правила, язык команд становится понятным и предсказуемым.

Настройка Vim при помощи файла Vimrc

Для настройки редактора Vim используется файл Vimrc. Он может быть пустым, а может содержать сотни или даже тысячи строк конфигурационных команд.

Вот короткий пример файла .vimrc (с комментариями), который можно использовать для разработки на Python:

Вот как выглядит текст этой статьи в редакторе Vim, настроенном подобным образом:


Взгляните на другой пример использования этой конфигурации, на этот раз со светлым фоном. Так выглядит код на Python:


Файл Vimrc находится в домашней директории пользователя, запускающего Vim. Например, для аккаунта пользователя matt в Mac OS X путь к файлу Vimrc будет следующим: /Users/matt/.vimrc

В Ubuntu (Linux) файл .vimrc будет находиться в директории /home/matt/ .

Если файл Vimrc не существует, просто создайте его в своей домашней директории, и Vim его подхватит при следующем запуске.

Руководства по Vim

Vim имеет репутацию сложного в изучении редактора, но эти руководства облегчат вам старт.

    . Отличный туториал, который позволит вам изучить достаточно для «выживания», т. е., простого ежедневного пользования. А уже в ходе работы вы познакомитесь с более продвинутыми функциями. . Позволит вам углубиться в изучение редактора. . В этой статье рассматриваются основные принципы Vim, а именно — возможность объединения команд. Язык Vim позволяет комбинировать простые команды для выполнения более сложных операций. Например, если вы в командном режиме наберете символ $, курсор переместится в конец строки. А если перед этим символом поставить d (d$), то будет удалено все, что находится от текущего положения курсора и до конца строки. Со временем простые команды станут для вас интуитивными, и тогда вам будет проще использовать их комбинацию, чем пользоваться мышью или выпадающим меню. . Эта статья объясняет синтаксис Vim. и How to use Vim for advanced editing of code on a VPS это два подробных руководства по работе с Vim — как локальной, так и на облачном сервере. . Игра (в командной строке) для изучения команд Vim. Используется тема PacMan. . Статья с воспоминаниями опытного разработчика об использовании Vim в качестве основного текстового редактора и среды разработки. Особенно интересна часть о том, как автор вернулся от использования плагинов к более простой конфигурации редактора. . Коллекция неочевидных сочетаний клавиш, многие из которых весьма полезны, хотя не очень распространены. . Крутая браузерная игра, помогающая изучить команды Vim. . Автор этой статьи рассказывает о том, чему он научился, несколько лет пользуясь исключительно Vim. Например, вы узнаете об относительной нумерации строк (вместо абсолютной), использовании различных опций конфигурации, нечетком поиске (для быстрого открытия файлов в другой директории). . В статье рассказывается, как быстро перемещаться по тексту, исправлять ошибки и формировать хорошие привычки редактирования.
  • Vimtutor — интерактивный учебник по Vim в UNIX-подобных системах. Изучение команд путем их использования, а не просто заучивания. Учебник можно русифицировать. Запускается командой $ vimtutor .

Ресурсы по Vimrc

Есть несколько ресурсов, которые помогут вам научиться структурировать файл .vimrc. Лучше добавлять опции конфигурации и тестировать их по отдельности, а не всем скопом (особенно если вы еще не знакомы с Vimrc).

    . Фантастически подробный обзор и надежное руководство по настройке Vim. Пригодится как начинающим, так и опытным пользователям этого редактора. . Эта статья познакомит вас с опциями файла .vimrc для работы с Python. . Из этой статьи вы узнаете о плагинах и настройках редактора Vim, позволяющих использовать его в качестве среды разработки Python.
  • В этом репозитории есть отдельная папка с файлами Vimrc. Примеры конфигурации в этих файлах сопровождаются хорошими комментариями, благодаря чему по ним можно учиться.
  • Если вам тяжело дается начало работы с Vim, обратите внимание на статью Two Simple Steps Helped Me Learn Vim.

Руководства по установке Vim

Эти руководства научат вас, как установить и запустить Vim на машине с Mac OS X, Linux или Windows.

  • Статья Upgrading Vim on OS X поясняет, зачем нужно обновлять Vim 7.2 до 7.3+ и как это сделать при помощи Homebrew.
  • Самый простой способ установить Vim на Windows это скачать и запустить файл vim74.exe.
  • В Linux Vim устанавливается командой sudo apt-get install vim .
  • Если вы в качестве среды разработки используете PyCharm, вам нет нужды устанавливать Vim отдельно. Вместо этого можно использовать плагин IdeaVim.

Использование Vim в качестве Python IDE

Когда освоите Vim в качестве редактора, можно попробовать улучшить продуктивность написания в нем кода на Python при помощи дополнительных опций конфигурации и плагинов. Вот несколько ресурсов, которые помогут вам сделать этот шаг:

Плагины Vim

Менеджеры плагинов Vim

Если вы используете много плагинов Vim одновременно, для упорядочивания всех зависимостей вам пригодится менеджер плагинов. Чаще всего в экосистеме Vim используются следующие менеджеры:

    — часто рекомендуется пользователями. — тоже очень широко используется. — позиционируется как минималистичный менеджер.

Специфичные руководства

Когда вы освоите Vim и попользуетесь им некоторое время, вы можете обнаружить функционал, о котором и не подозревали. Следующие руководства расскажут вам, как использовать некоторые специфические функции. Если вы пользуетесь Vim достаточно долго, вероятно, вы уже знакомы с ними, но у каждого свой учебный путь, так что лучше проверьте, не упустили ли вы что-то важное.

Vim как IDE для Python.jpg

Не так давно я решил настроить текстовый редактор 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:

Vim как IDE для Python

Файл конфига .vimrc я хорошо документировал, все настройки с комментариями вы найдете в полном файле во вложении к статье или на BitBucket.

Статья получилась достаточно объемной, по мере каких-либо изменений/нововведений буду обновлять материал.
Жду ваших дополнений/замечаний в комментарии!

Vim-это мощный текстовый редактор, который принадлежит к одному из компонентов по умолчанию в каждом дистрибутиве Linux, а также Mac OS X. Фильм следует своей собственной концепции использования, заставляя сообщество разделиться на сильных сторонников и яростных противников, которые выступают за другие редакторы, такие как Emacs. (Кстати, это очень приятно зимой, когда две восторженные команды вместе играют в снежки).

Vim можно индивидуализировать и расширить с помощью дополнительных плагинов, чтобы приспособить инструмент к вашим конкретным потребностям. В этой статье мы выделим несколько расширений и обсудим полезную настройку для улучшения разработки программного обеспечения с помощью Python.

Автозавершение

Vim уже оснащен функцией автоматического завершения. Это хорошо работает, но ограничивается словами, которые уже существуют в текущем текстовом буфере. В режиме вставки с помощью комбинации клавиш CTRL+N вы получаете следующее слово в текущем буфере и CTRL+P последнее. В любом случае появляется меню со словами, из которого вы выбираете слово, которое будет вставлено в текст в текущей позиции курсора документа.

Это уже довольно круто. К счастью, такая же функция существует для целых строк текста. В режиме вставки сначала нажмите CTRL+X , а затем CTRL+L . Появится меню с аналогичными строками, из которого вы выберете строку, которую хотите вставить в текст в текущем положении курсора документа.

Для эффективной разработки в Python Vim содержит стандартный модуль с именем python complete (Python Omni Completion). Чтобы активировать этот плагин, добавьте следующие две строки в конфигурационный файл Vim .vimrc :

Следующий плагин, который я хотел бы обсудить, называется Jedi-Vim . Он соединяет Vim с библиотекой Jedi autocompletion.

Установив соответствующий пакет в вашу систему Debian GNU/Linux, он нуждается в дополнительном шаге, чтобы заставить Jedi-Vim работать. Плагин должен быть активирован с помощью менеджера плагинов Vim следующим образом:

Далее проверьте состояние плагина:

Теперь плагин активирован, и вы можете использовать его в Vim во время программирования. Как только вы наберете точку или нажмете CTRL+Пробел , меню откроется и покажет вам имена методов и операторов, которые могут подойти. На рисунке ниже показаны соответствующие записи из модуля csv . Как только вы выберете пункт из меню, он будет вставлен в ваш исходный код.

Предоставленная в репозитории Git, установка требует дополнительных шагов для ее использования. Пакет на Debian GNU/Linux поставляется с скомпилированной версией, и после установки пакета через apt-get следующие шаги заставят его работать . Сначала включите пакет с помощью Vim Addon Manager ( vam ) или команды vim-addons :

Далее проверьте состояние плагина. Вывод ниже показывает вам, что плагин успешно установлен для вас как обычного пользователя:

В-третьих, скопируйте значение по умолчанию ycm_extra_conf.py файл из каталога примеров в папку

/.vim/ следующим образом:

Последний шаг-добавить следующие две строки в файл .vimrc :

Подсветка синтаксиса

Объединение Vim с системой контроля версий Git

Контроль версий очень важен для разработчиков, и Git, вероятно, лучшая система для этого. Компилируя код Python, интерпретатор создает ряд временных файлов, таких как __pikachu__ и *.pyc . Изменения этих файлов не нужно отслеживать в Git. Чтобы игнорировать их, Git предлагает функцию так называемого файла .gitignore . Создайте этот файл в своей ветке разработки, управляемой Git, со следующим содержимым:

Кроме того, добавьте файл README для вашего проекта, чтобы задокументировать, о чем он идет. Независимо от того, насколько мал ваш проект, файл README помогает вам (и другим) запомнить, для чего предназначен код. Запись этого файла в формате Markdown особенно полезна, если вы синхронизируете свой код Python с репозиторием на GitHub. Файл README автоматически преобразуется в HTML-код, который можно легко просмотреть в вашем веб-браузере.

Vim может сотрудничать с Git напрямую, используя специальные плагины. Среди прочих есть вим-беглец , гв.вим и уксус . Все они доступны на Github, и в основном в виде пакета для Debian GNU/Linux.

Скачав vim-fugitive через apt-get , он должен быть активирован аналогично тому, как это было сделано ранее с другими плагинами:

Этот плагин работает только с файлами, которые отслеживаются с помощью Git. Становится доступным большое количество дополнительных команд Vim, таких как :Gedit , : Gdiff , : G status , : G grep и :Glog . Как указано на сайте проекта эти команды Vim соответствуют следующим командам и действиям Git:

  • :Gedit : Отредактируйте файл в индексе и запишите в него все изменения
  • ::Great ( git checkout -- filename ): Загрузить содержимое файла в текущий буфер
  • ::Write ( git add ): Добавьте файл в список отслеживаемых в данный момент файлов
  • ::Diff ( git diff ): Вызовите поэтапную версию файла бок о бок с рабочей версией дерева и используйте возможности обработки Vim diff для поэтапной обработки подмножества изменений файла.
  • ::Move ( git mv ): Переместить файл в новое место
  • ::Status ( git status ): Показать текущее состояние вашего каталога Git
  • ::Commit ( git commit ): Зафиксируйте ваши изменения
  • ::Grep ( git grep ): Поиск заданного шаблона в репозитории Git
  • :Glog ( git log ): Загружает все предыдущие версии файла в список quickfix, чтобы вы могли перебирать их и наблюдать за развитием файла!
  • ::Blame ( git blame ): Показывает, кто внес последние изменения в файл

Работа Со Скелетами

Допустим, например, вы хотите, чтобы все новые файлы Python начинались со следующего текста:

/.vim/skeleton.py . Чтобы указать Vim, какой файл следует использовать в качестве скелетного файла для Python, добавьте в свой файл .vimrc следующее:

Примечания по использованию плагинов

Обычно Vim работает довольно быстро. Чем больше плагинов вы активируете, тем больше времени это занимает. Запуск Vim задерживается и занимает заметно больше времени, чем раньше. Кроме того, обычно пакеты Debian/Ubuntu работают из коробки, и сценарии установки включают в себя все шаги для правильной настройки плагина. Я заметил, что это не так, и иногда требуются дополнительные шаги.

Больше Ресурсов

Существует ряд курсов и постов в блогах, которые охватывают различные настройки Vim для повседневного использования в качестве разработчика Python, и я бы настоятельно рекомендовал заглянуть туда.

Следующий курс нацелен на то, чтобы вы овладели Vim на любой операционной системе, помогая вам получить уровень знаний и комфортности работы с редактором, которого трудно достичь, читая статьи в одиночку:

Остальные-это некоторые замечательные ресурсы со всего Интернета, которые мы также нашли очень полезными:

Эти статьи помогут расширить ваши знания. Наслаждаться:)

Признание

Автор хотел бы поблагодарить Золеку Хатитонгве за ее помощь и критические замечания при подготовке статьи.

Читайте также: