Vim как IDE для Python 2021

Vim (или NeoVim) - мой любимый текстовый редактор / IDE. Мне нравится его расширяемость, адаптируемость и простота в терминале.

Прежде чем я начну, вот краткое руководство по установке Neovim.

Основы

Другие популярные плагины 🔥

  • Scrooloose / nerdtre - обозреватель файловой системы в редакторе vim.

  • Liuchengxu / vista.vim для просмотра и поиска символов LSP и отображения обзора классов, функций и методов вашего проекта.

Отступ

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

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

Линтинг и фиксация

Линтинг, то есть проверка синтаксиса

В Vim есть множество отличных опций для линтинга и исправления. Мои фавориты - Syntastic и эль, оба отличные линтеры.

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

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

Синтастический

  • Vim-syntastic / syntastic очень популярно, но является синхронным, что может вызывать задержки в пользовательском интерфейсе.
  • Syntastic очень прост в установке, настройке и использовании. Я использовал Syntastic 3 года: мне он очень понравился.

ALE - асинхронный движок Lint

  • Эль - еще один потрясающий линтер и закрепитель.
  • 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, чтобы отключить предупреждения стиля. Чтобы сгенерировать ваш pylintrc, сделайте следующее: pylint --generate-rcfile > ~/.pylintrc (или замените ~ / там, где вы хотите его поместить 😊).

Автозавершение кода и многое другое

Мы рассмотрели ALE, в котором есть автозавершение кода, но это еще не все!

Если вы уже установили ale и вам нужен другой плагин для автозавершения кода, не забудьте установить это (у меня есть эта строка в моем ~ / .vimrc)
let g:ale_completion_enabled = 0

джедай-вим

  • Davidhalter / jedi-vim для автозавершения кода Python на базе Jedi, языкового сервера Python.

CoC - Завоевание завершения

  • Я использую coc.nvim с coc-jedi, который является оболочкой coc.nvim для jedi-language-server. 😊
  • Neoclide / coc.nvim - это интеллектуальный движок. Установите расширения coc или настройте языковые серверы для поддержки LSP. (Nodejs является обязательным условием).
  • Pappasam / coc-jedi - это расширение, которое вы можете использовать для Python.
  • Установите coc-jedi с помощью :CocInstall coc-jedi после того, как вы получите coc.nvim и установили jedi-language-server
  • Вот отличная запись в блоге о том, как работает coc и почему вам следует использовать coc-jedi: Как написать расширение coc.nvim

Ты дополняешь меня

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

И вуаля! У вас vim работает как отличная среда разработки для Python.

Вы даже можете использовать мышь, если действительно хотите: (в Neovim используйте :set mouse=a). 🐭