Превращаем Vim в полноценную IDE для Python
2026-02-21 22:09 Diff

#статьи

  • 15 ноя 2021
  • 0

Какие дополнения и зачем ставить, как их настроить.

evgeniy kornilov / shutterstock

Переводчик, специалист по авиационной безопасности, начинающий веб-разработчик. Убеждён, что любой человек может сочетать абсолютно разные интересы и сферы профессиональной деятельности, ведь наши возможности безграничны.

об авторе

Разработчик-стажёр в 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;
NERDTree. Скриншот: сайт Github
  • liuchengxu/vista.vim — находит и подсвечивает символы LSP, а также выводит обзор классов, функций и методов вашего проекта.
Было — стало 😍 Скриншот: GitHub

Ещё один способ настроить отступы — это добавить в файл .vimrc строчку:

set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab

Если что, линтинг — это проверка синтаксиса :)

С Vim совместимо много отличных расширений для линтинга и исправления кода. Мои любимчики — это Syntastic и ALE, оба прекрасно справляются со своей задачей.

Но можно установить и другие удобные инструменты — вот так:

pip install pycodestyle | python style guide checker pip install vulture | finds ‘dead’/unused code pip install pylint | Linting

vim-syntastic/syntastic очень популярен, но работает синхронно, из-за чего возможны лаги интерфейса.

Syntastic невероятно просто установить, настроить и применять. Я работала с ним три года: он очень мне понравился.

ALE — это ещё один крутой линтер и корректор кода. Он настолько классный, что с ним я почти позабыла Syntastic.

Когда вы наводите курсор на строку с ошибкой, ALE выводит внизу экрана сообщение: объясняет, в чём ошибка и как её исправить. А чтобы увидеть все проблемы, достаточно выполнить команду :lopen.

Настраивать ALE можно как душа желает. Вот как я настроила свой:

let g:ale_linters = {'python': 'all'} let g:ale_fixers = {'python': ['isort', 'yapf', 'remove_trailing_lines', 'trim_whitespace']} let g:ale_lsp_suggestions = 1 let g:ale_fix_on_save = 1 let g:ale_go_gofmt_options = '-s' let g:ale_go_gometalinter_options = '— enable=gosimple — enable=staticcheck' let g:ale_completion_enabled = 1 let g:ale_echo_msg_error_str = 'E' let g:ale_echo_msg_warning_str = 'W' let g:ale_echo_msg_format = '[%linter%] [%severity%] %code: %%s'

Вдобавок я отключила предупреждения о стилистических погрешностях. Делается это в файле .pylintrc. Создайте его командой: pylint --generate-rcfile > ~/.pylintrc (вместо ~/ укажите расположение будущего файла 😊).

ALE поддерживает автозавершение кода. Но не только он.

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

let g:ale_completion_enabled = 0

davidhalter/jedi-vim добавляет автозавершение кода на Python. За основу взят Jedi, языковой сервер Python.

Я использую плагин автозавершения 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».

ycm-core/YouCompleteMe использует Jedi. Код автодополняется по мере ввода. Кроме Python поддерживается много других языков.

Пример работы YouCompleteMe. Источник: GitHub

Ура! Мы превратили Vim в отличную IDE для Python.

Тсс… всем, кто любит мышку: в Neovim она включается командой :set mouse=a 🐭

* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook* и Instagram* на территории Российской Федерации по основаниям осуществления экстремистской деятельности».

Научитесь: Администрирова­ние ОС Linux Узнать больше