Превращаем Vim в полноценную IDE для Python
Какие дополнения и зачем ставить, как их настроить.
evgeniy kornilov / shutterstock
Кристи Кэрол Бьючемп
(Christie Carol Beauchamp)
об авторе
Разработчик-стажёр в Facebook*. Работает над приложением Chai и рассказывает о нём в блоге. Живёт в Лондоне.
Vim (или Neovim) — мой любимый текстовый редактор и IDE. Мне нравится его хорошая настраиваемость, большой набор плагинов, удобный терминал и логичный язык команд.
Джентльменский набор
- junegunn/vim-plug — очень популярный менеджер плагинов, в котором нет ничего лишнего;
- tpope/vim-commentary — позволяет закомментировать код: командой gcc — строку, а командой gc — выделенный фрагмент в визуальном режиме (когда работает мышка);
- jeetsukumaran/vim-pythonsense — включает поддержку привычных для Python текстовых объектов, а также команды, которые помогут перемещаться по файлу;
- junefunn/fzf — поможет молниеносно найти файл, используя нечёткий поиск (fuzzy search). (А вообще, fzf умеет гораздо больше.)
Другие популярные плагины 🔥
- scrooloose/nerdtree — это файловый менеджер, работающий в редакторе Vim;
- liuchengxu/vista.vim — находит и подсвечивает символы LSP, а также выводит обзор классов, функций и методов вашего проекта.
Расстановка отступов
- Vimjas/vim-python-pep8-indent — плагин для автоматической расстановки отступов в коде ✨
Ещё один способ настроить отступы — это добавить в файл .vimrc строчку:
Линтинг и исправление кода
Если что, линтинг — это проверка синтаксиса :)
С Vim совместимо много отличных расширений для линтинга и исправления кода. Мои любимчики — это Syntastic и ALE, оба прекрасно справляются со своей задачей.
Но можно установить и другие удобные инструменты — вот так:
Syntastic
vim-syntastic/syntastic очень популярен, но работает синхронно, из-за чего возможны лаги интерфейса.
Syntastic невероятно просто установить, настроить и применять. Я работала с ним три года: он очень мне понравился.
Asynchronous Lint Engine (ALE)
ALE — это ещё один крутой линтер и корректор кода. Он настолько классный, что с ним я почти позабыла Syntastic.
Когда вы наводите курсор на строку с ошибкой, ALE выводит внизу экрана сообщение: объясняет, в чём ошибка и как её исправить. А чтобы увидеть все проблемы, достаточно выполнить команду :lopen.
Настраивать ALE можно как душа желает. Вот как я настроила свой:
Вдобавок я отключила предупреждения о стилистических погрешностях. Делается это в файле .pylintrc. Создайте его командой: pylint --generate-rcfile > ~/.pylintrc (вместо ~/ укажите расположение будущего файла 😊).
Автозавершение кода и многое другое
ALE поддерживает автозавершение кода. Но не только он.
Если вы уже установили ALE, но будете пользоваться другим плагином для автодополнения, не забудьте отключить эту функцию у ALE. Делается это в том же файле .vimrc:
jedi-vim
davidhalter/jedi-vim добавляет автозавершение кода на Python. За основу взят Jedi, языковой сервер Python.
Conquer of Completion (CoC)
Я использую плагин автозавершения coc.nvim вместе с coc-jedi — coc.nvim-оболочкой для jedi-language-server 😊
- neoclide/coc.nvim — это движок интеллектуального анализа кода. Чтобы поддерживался LSP, установите CoC-расширение или настройте языковой сервер. (Обязательно должен стоять Node.js.)
- pappasam/coc-jedi — ещё одно расширение для Python. Установите его командой :CocInstall coc-jedi после coc.nvim и jedi-language-server.
Вот отличная статья о том, что хорошего в CoC и почему стоит применять coc-jedi: «Как написать расширение для coc.nvim».
YouCompleteMe (YCM)
ycm-core/YouCompleteMe использует Jedi. Код автодополняется по мере ввода. Кроме Python поддерживается много других языков.
Читайте также:
Ура! Мы превратили Vim в отличную IDE для Python.
Тсс… всем, кто любит мышку: в Neovim она включается командой :set mouse=a 🐭