Vim для хіпстерів, або вічне сяйво вдалих інженерних рішень
Якби я був серйозним програмістом як мій батько або мій брат, я проводив би більше часу за написанням коду і вивченням документації. Натомість я перетворюю свій workflow на фетиш і документую процес тут. Втім, в цього поста є більш гідний привід: статистика свідчить1, що нам пора серйозно поговорити про Vim.
Життя після :q!
Коли я трохи навчився долати паніку, що охоплювала мене щоразу, як консольна
команда git commit
закидала мене в редактор, який закривається кнопкою
живлення на комп’ютері,2 мені трапилась стаття
інженерки Microsoft Сюз Хінтон. Сюз щотижня стрімить на твітчі свій код, який
вона набирає у Vim. Так я вперше дізнався, що архаїчний на перший
погляд редактор має декілька переваг, які навіть сьогодні роблять його основним
інструментом для топ-спеціалістів.
-
Тільки клавіатура. Для мене це стало найважливішим аргументом, і, водночас, найменш очевидним. Цінність стає зрозумілою, коли через півдня роботи помічаєш, що руки менше втомились. Потім повертаєшся до звичного редактора, і тільки тут звертаєш увагу, наскільки постійне хапання за мишку збиває з ритму.
-
Мінімалізм. Я терпіти не можу більшість IDE, з якими мені доводилось працювати, саме за їх візуальну надмірність. Три ряди кнопок і одразу кілька лінтерів, що підкреслюють/виділяють код десятком кольорів, з’їдаючи при цьому гігабайти пам’яті, are not my idea of fun. Справа смаку, звісно, але мені простіше погуглити і підключити мінімум необхідного для роботи, ніж отримувати купу непотрібного і незрозумілого мотлоху “з коробки”.
-
Швидкість. Див. вище. Моїм першим редактором був легковісний Sublime Text, але навіть йому далеко до блискавичності Vim.
-
Інтегрованість в консоль. Необхідний для моєї роботи мінімум інструментів: браузер, графічний редактор, текстовий редактор, консоль, месенджер. Кожне зайве відкрите вікно збільшує плутанину, тому чим більше інструментів я можу розмістити в консолі, тим краще. Завдяки Vim і slack-term мені вистачає трьох вікон на все.
-
Кастомізація. Важливо, що 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
, можна виділити базовий набір корисних плагінів.
-
NerdTree. Сайдбар для навігації по проекту, звичний для популярних редакторів.
-
CtrlP. Fuzzy search aka “пухнастий пошук”, моментальний пошук файлів у проекті за їх назвою.
-
vim-airline. Легковісна панель статусу для зручної орієнтації в основному вікні.
-
vim-multiple-cursors. Мультикурсор для одночасного редагування тексту в кількох точках файлу.
-
vim-surround. Коли потрібно швидко змінити тип дужок навколо виразу.
Про те, як зручно підключити vim-плагіни і підтримувати їх оновленими до останньої версії, піде мова у наступному пості.