Vim & Python

Pycharm для меня являлся одним из самых удобных IDE для разработки на Python. Но со временем начал понемногу переносить часть своей работы в Vim. Причин несколько:

Свежеустановленный Vim обладает лишь базовым функционалом редактирования текста, остальное приходится "донастраивать" под себя.

Я обычно предпочитаю скачивать самую свежую версию через Homebrew. Для других ОС есть свои установщики. Дальше потребуется поставить менеджер плагинов. Я использую Plug.

Сама настройка Vim - тема отдельная, и статей и советов на эту тему очень много. Я лишь опишу то, что мне удалось перенести из Pycharm в Vim. Список плагинов, который лежит в файле ~/.vimrc, указан ниже:

Plug 'ctrlpvim/ctrlp.vim'
Plug 'scrooloose/nerdtree'
Plug 'davidhalter/jedi-vim'

CtrlP заменил табы из IDE, так-как он удобнее позволяет отображать и переходить между открытыми файлами. NerdTree используется для отображения дерева файлов. Jedi - пока один из немногих хороших плагинов для работы с Python, позволяет делать автодополнения, просматривать документацию обьекта, автоматический рефакторинг переменных и т.д.

Базовые настройки для плагинов:

"" ctrlp
let g:ctrlp_map = '<c-p>'          " открываем нажатием Ctrl+P
let g:ctrlp_cmd = 'CtrlPBuffer'    " показывать список буферов по-умолчанию

"" nerdtree
map <C-n> :NERDTreeToggle<CR>      " открываем нажатием Ctrl-N
let NERDTreeMinimalUI = 1
let NERDTreeMapChangeRoot = '<Enter>'  " переходим в директорию нажатием Enter
let NERDTreeMapUpdir = '<BS>'          " переходим в родительскую директорию нажатием Backspace
let NERDTreeMapActivateNode = '<Space>'   " открываем файл с помощью Space
let NERDTreeIgnore=['\.pyc$', '\.egg-info$']  " не отображать мусор

"" jedi-vim
let g:jedi#popup_on_dot = 0        " показывать автодополнение вручную
let g:jedi#show_call_signatures = "2"   " отображать сигнатуру функции в popup

autocmd FileType python setlocal completeopt-=preview  " не отображать окно с docstring

Для работы с кодом на Python желательно указать форматирование по-умолчанию:

autocmd FileType python setlocal et sw=4 sts=4 ts=4

Также часто надоедает после каждого редактирования файла вызывать команду сохранения. После работы в IDE от Intellij сильно привыкаешь к автоматическому сохранению текста:

"" autosave
set autowriteall
set updatetime=2000
autocmd FocusLost * :wa
autocmd CursorHoldI * :w
autocmd InsertLeave * :w

Дальше остается лишь выучить пару приемов самого редактора, и тогда скорость работы становится почти неотличимой от прежней.