Делаем Python IDE из Vim

Разработка /
Я люблю и зачастую использую его, когда пишу -код. Поделюсь с вами несколькими полезными плагинами и утилитами для создания полноценного используя Vim 8.

Разработка: Делаем Pithon IDE из Vim
Как вы наверное заметили по скриншоту терминала, я так же использую tmux. Считаю его очень удобным.
Проверка синтаксиса
Многие используют syntastic для проверки синтаксиса, но я рекомендую попробовать w0rp/ale(Asynchronous Lint Engine) это плагин для NeoVim и Vim 8, реализующий линтинг, аналогично flycheck в emacs, работает «на лету», вы печатаете — он проверяет.
Разработка: Безопасность: Делаем Python IDE из Vim
Форматирование кода
Для форматирования python-кода я использую google/yapf. Сделайте привязку клавиш к yapf через =.
autocmd FileType python nnoremap <LocalLeader>= :0,$!yapf<CR>

Можете ещё попробовать Chiel92/vim-autoformat.
Сортировка import
timothycrosley/isort позволяет сортировать в алфавитном порядке import, и автоматически разделяет на секции. Например, используйте i для выполнения isort на вашем текущем файле python:
autocmd FileType python nnoremap <LocalLeader>i :!isort %<CR><CR>

Или можете для этого использовать этот Vim плагин: fisadev/vim-isort.

Автодополнение
Valloric/YouCompleteMe отличный вариант автодополнений. Если вы считаете, что YouCompleteMe слишком громоздкий, попробуйте jedi-vim, как альтернативу. Они оба используют jedi в качестве бэкенда.

Разработка: Безопасность: Jedi-vim
Если вы используете neovim, можете попробовать для этих целей Shougo/deoplete.nvim.
Быстрый запуск
Если вы используете Vim8, то можете асинхронно исполнять файлы с помощью skywind3000/asyncrun.vim и на выходе автоматически получите результат вроде этого:
" Quick run via <F5>
nnoremap <F5> :call <SID>compile_and_run()<CR>

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 % -o %<; time ./%<"
    elseif &filetype == 'cpp'
       exec "AsyncRun! g++ -std=c++11 % -o %<; time ./%<"
    elseif &filetype == 'java'
       exec "AsyncRun! javac %; time java %<"
    elseif &filetype == 'sh'
       exec "AsyncRun! time bash %"
    elseif &filetype == 'python'
       exec "AsyncRun! time python %"
    endif
endfunction

Для neovim, можете использовать neomake/neomake. Вот описание из README neomake:
Он предназначен для замены встроенной комманды :make и предоставляет функциональные возможности, аналогичные таким плагинам как syntastic и dispatch.vim. В основном используется для запуска кода линтеров и компиляторов из Vim, но может быть использован для запуска любой программы.

Другой, довольно удобный способ, к которому я прибегаю, заключается в использовании Tmux. Идея проста: он разделяет экран эмулятора терминала на две части. В одной из них будет запущен Vim, а в другой, вы запускаете ваши сценарии.
Разработка: Vim из Python IDE
Расширяем стандартную подсветку синтаксиса python
Для этой цели используйте python-mode/python-mode. Например, вы можете добавить подсветку для pythonSelf.
hi pythonSelf  ctermfg=68  guifg=#5f87d7 cterm=bold gui=bold

Разработка: Безопасность: Делаем Pithon IDE из Vim
Если желаете сильнее кастомизировать подсветку, можете использовать 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 и другие.

Разработка: Делаем Pithon IDE из VimВ целом, vim великолепное приложение и имеет массу отличных плагинов способных облегчить жизнь, потому вопрос выбора IDE для меня не возникает.:)
Можете еще присмотреться к space-vim, активировать ycmd, syntax-checking, python и программируемые слои, на выходе получите тоже что на скриншоте слева.
2 комментария
marimysh
Но как-то не особо сказано про ситуацию, когда у тебя больше одного файла в проекте. Они же обычно зависимые и между ними как-то надо работать. Не просто так ведь IDE типа PyCharm появились.
SpoliatoR
Интересная тема… Но как правильно замечено, трудности с проектом могут возникнуть. Хотя… )))
В продолжении серии «сделай IDE» — How to Make ‘Vim Editor’ as Bash-IDE Using ‘bash-support’ Plugin in Linux
В принципе как то тоже популярное направление )
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.