Я люблю Vim и зачастую использую его, когда пишу Python-код. Поделюсь с вами несколькими полезными плагинами и утилитами для создания полноценного Python IDE используя Vim 8.
Как вы наверное заметили по скриншоту терминала, я так же использую tmux. Считаю его очень удобным.
Проверка синтаксиса
Многие используют syntastic для проверки синтаксиса, но я рекомендую попробовать w0rp/ale(Asynchronous Lint Engine) это плагин для NeoVim и Vim 8, реализующий линтинг, аналогично flycheck в emacs, работает «на лету», вы печатаете — он проверяет.
Форматирование кода
Для форматирования python-кода я использую google/yapf. Сделайте привязку клавиш к yapf через
autocmd FileType python nnoremap
Можете ещё попробовать Chiel92/vim-autoformat.
Сортировка import
timothycrosley/isort позволяет сортировать в алфавитном порядке import, и автоматически разделяет на секции. Например, используйте
autocmd FileType python nnoremap
Или можете для этого использовать этот Vim плагин: fisadev/vim-isort.
Автодополнение
Valloric/YouCompleteMe отличный вариант автодополнений. Если вы считаете, что YouCompleteMe слишком громоздкий, попробуйте jedi-vim, как альтернативу. Они оба используют jedi в качестве бэкенда .
Если вы используете neovim, можете попробовать для этих целей Shougo/deoplete.nvim.
Быстрый запуск
Если вы используете Vim8, то можете асинхронно исполнять файлы с помощью skywind3000/asyncrun.vim и на выходе автоматически получите результат вроде этого:
" Quick run via
nnoremap
augroup SPACEVIM_ASYNCRUN
autocmd!
" Automatically open the quickfix window
autocmd User AsyncRunStart call asyncrun#quickfix_toggle(15, 1)
augroup END
function! s:compile_and_run()
exec 'w'
if &filetype == 'c'
exec "AsyncRun! gcc {33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a} -o {33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a}<; time ./{33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a}<"
elseif &filetype == 'cpp'
exec "AsyncRun! g++ -std=c++11 {33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a} -o {33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a}<; time ./{33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a}<"
elseif &filetype == 'java'
exec "AsyncRun! javac {33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a}; time java {33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a}<"
elseif &filetype == 'sh'
exec "AsyncRun! time bash {33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a}"
elseif &filetype == 'python'
exec "AsyncRun! time python {33d8302486bd10b0fde64d2037652320e6f176a736d71849c0427b0d7398501a}"
endif
endfunction
Для neovim, можете использовать neomake/neomake. Вот описание из README neomake:
Он предназначен для замены встроенной комманды :make и предоставляет функциональные возможности, аналогичные таким плагинам как syntastic и dispatch.vim. В основном используется для запуска кода линтеров и компиляторов из Vim, но может быть использован для запуска любой программы.
Другой, довольно удобный способ, к которому я прибегаю, заключается в использовании Tmux. Идея проста: он разделяет экран эмулятора терминала на две части. В одной из них будет запущен Vim, а в другой, вы запускаете ваши сценарии.
Расширяем стандартную подсветку синтаксиса python
Для этой цели используйте python-mode/python-mode. Например, вы можете добавить подсветку для pythonSelf .
hi pythonSelf ctermfg=68 guifg=#5f87d7 cterm=bold gui=bold
Если желаете сильнее кастомизировать подсветку, можете использовать space-vim: python Layer и syntax/python.vim in python-mode/python-mode .
На самом деле, python-mode содержит тонны всякого добра для разработки в Vim, например, статический анализ, автодополнения, документация и многое другое. (Но лично я предпочитаю, функциональные возможности сторонних плагинов.)
Подытожим
Есть также необходимые плагины общего программирования, такие как scrooloose/nerdcommenter для удобного комментирования, Yggdroot/indentLine or nathanaelkane/vim-indent-guides для визуального отображения отступов в Vim и другие.
В целом, vim великолепное приложение и имеет массу отличных плагинов способных облегчить жизнь, потому вопрос выбора IDE для меня не возникает.:)
Можете еще присмотреться к space-vim, активировать ycmd, syntax-checking, python и программируемые слои , на выходе получите тоже что на скриншоте слева.