Vim как IDE для Python 2021
Vim (или NeoVim) - мой любимый текстовый редактор / IDE. Мне нравится его расширяемость, адаптируемость и простота в терминале.
Прежде чем я начну, вот краткое руководство по установке Neovim.
Основы
- Junegunn / vim-plug - очень популярный минималистичный менеджер плагинов.
- Tpope / vim-commentary позволяет вам нажать gcc, чтобы закомментировать строку, или gc, чтобы прокомментировать выделение в визуальном режиме
- Jeetsukumaran / vim-pythonsense предоставляет некоторые специфичные для Python текстовые объекты и движения, которые помогут вам перемещаться по файлу.
- Junefunn / fzf, чтобы помочь вам найти этот файл как можно быстрее с помощью нечеткого поиска (fzf также может делать гораздо больше, чем просто поиск файлов)
Другие популярные плагины 🔥
- Scrooloose / nerdtre - обозреватель файловой системы в редакторе vim.
- Liuchengxu / vista.vim для просмотра и поиска символов LSP и отображения обзора классов, функций и методов вашего проекта.
Отступ
- Vimjas / vim-python-pep8-indent для удобного автоматического отступа ✨
Другой распространенный способ настроить отступ - вручную добавить в ваш .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
). 🐭