Якби я був серйозним програмістом як мій батько або мій брат, я проводив би більше часу за написанням коду і вивченням документації. Натомість я перетворюю свій workflow на фетиш і документую процес тут. Втім, в цього поста є більш гідний привід: статистика свідчить1, що нам пора серйозно поговорити про Vim.

Життя після :q!

Коли я трохи навчився долати паніку, що охоплювала мене щоразу, як консольна команда git commit закидала мене в редактор, який закривається кнопкою живлення на комп’ютері,2 мені трапилась стаття інженерки Microsoft Сюз Хінтон. Сюз щотижня стрімить на твітчі свій код, який вона набирає у Vim. Так я вперше дізнався, що архаїчний на перший погляд редактор має декілька переваг, які навіть сьогодні роблять його основним інструментом для топ-спеціалістів.

(There are dozens of us! Dozens!)

  1. Тільки клавіатура. Для мене це стало найважливішим аргументом, і, водночас, найменш очевидним. Цінність стає зрозумілою, коли через півдня роботи помічаєш, що руки менше втомились. Потім повертаєшся до звичного редактора, і тільки тут звертаєш увагу, наскільки постійне хапання за мишку збиває з ритму.

  2. Мінімалізм. Я терпіти не можу більшість IDE, з якими мені доводилось працювати, саме за їх візуальну надмірність. Три ряди кнопок і одразу кілька лінтерів, що підкреслюють/виділяють код десятком кольорів, з’їдаючи при цьому гігабайти пам’яті, are not my idea of fun. Справа смаку, звісно, але мені простіше погуглити і підключити мінімум необхідного для роботи, ніж отримувати купу непотрібного і незрозумілого мотлоху “з коробки”.

  3. Швидкість. Див. вище. Моїм першим редактором був легковісний Sublime Text, але навіть йому далеко до блискавичності Vim.

  4. Інтегрованість в консоль. Необхідний для моєї роботи мінімум інструментів: браузер, графічний редактор, текстовий редактор, консоль, месенджер. Кожне зайве відкрите вікно збільшує плутанину, тому чим більше інструментів я можу розмістити в консолі, тим краще. Завдяки Vim і slack-term мені вистачає трьох вікон на все.

  5. Кастомізація. Важливо, що Vim можна і треба налаштовувати. Можливості кастомізації настільки широкі, що це з незвички відлякує багатьох. Оптимальний підхід тут — ставитись до еволюції свого сетапу як до процесу, який ніколи не буде завершений, і додавати новий функціонал поступово, мірою виникнення потреби.

З чого почати?

Команда vimtutor в терміналі пропонує стислий і зрозумілий практичний вступ до редактора - ідеальний спосіб почати знайомство. Після освоєння навігації і базових команд можемо влаштуватись зручніше - для цього треба створити файл конфігурації, який Vim зчитуватиме щоразу при запуску3.

$ touch ~/.vimrc

Саме у .vimrc прописуються основні користувацькі налаштування: меппінг команд, підсвітка синтаксису, відступи, елементи інтерфейсу тощо. Писати файл з нуля не потрібно, краще взяти чужий за основу. Я запозичив більшу частину у вищезгаданої Сюз Хінтон, моя конфігурація також лежить у відкритому доступі.

Варто виділити декілька налаштувань, які особливо полегшать роботу тим, хто прийшов з більш традиційних редакторів (тобто всім, хто використовує Vim в 2018 році).

set clipboard=unnamed    " використовувати загальний буфер обміну замість вбудованого у Vim
set smartindent          " автоматичний відступ 
set number               " показувати номер рядка по лівому краю
set cursorline           " підсвітити рядок
set showmatch            " підсвітити парну дужку 
set incsearch            " пошук одразу при введенні запиту
set hlsearch             " підсвітити результати пошуку
set ignorecase smartcase " пошук з врахуванням регістру лише тоді, коли в запиті є великі літери
set backspace=2          " зняти обмеження для backspace

Any colour you like

Файли кольорової підсвітки зберігаються окремо. Я використовую палітру dracula всюди, де це можливо (включаючи цей сайт), гугл має знати більше про ваші улюблені теми.

Підключати просто. З папки, в якій знаходиться файл підсвітки:

$ mkdir -p ~/.vim/colors && mv dracula.vim $_

Після цього підключити файл в .vimrc:

syntax on
color dracula

Vim на стероїдах

Користувачі ставлять різні вимоги до редактора коду залежно від своїх смаків і повсякденних задач. Цей попит екосистема Vim успішно задовольняє за допомогою надзвичайно широкого набору доступних плагінів, які розширюють базовий функціонал. Для пошуку під конкретні потреби є чудовий сайт vimawesome.com, але так само, як і з конфігурацією .vimrc, можна виділити базовий набір корисних плагінів.

  1. NerdTree. Сайдбар для навігації по проекту, звичний для популярних редакторів.

  2. CtrlP. Fuzzy search aka “пухнастий пошук”, моментальний пошук файлів у проекті за їх назвою.

  3. vim-airline. Легковісна панель статусу для зручної орієнтації в основному вікні.

  4. vim-multiple-cursors. Мультикурсор для одночасного редагування тексту в кількох точках файлу.

  5. vim-surround. Коли потрібно швидко змінити тип дужок навколо виразу.

Про те, як зручно підключити vim-плагіни і підтримувати їх оновленими до останньої версії, піде мова у наступному пості.