Навіщо vi-сокира програмісту 21-го століття

Навіщо vi-сокира програмісту 21-го століття

Не пам'ятаю, коли і за яких саме обставин, але якось дуже давно я відкрив для себе Git. Спочатку я не зовсім, звичайно, зрозумів його переваг перед іншими системами контролю версій, але вже порядком до того часу втомившись від TFS, яку на той момент ми використовували в компанії, вирішив його спробувати.


Git дуже швидко завоював мою любов і з тих пір я навіть не уявляю собі свою роботу без нього.

Одного разу, граючись і пробуючи різні команди, я випадково запустив режим редактора, а Git, як виявилося, за замовчуванням використовував Vim, який я до того часу в очі і не бачив. Ну і як зазвичай відбувається перше знайомство з цим редактором? Правильно - з подивом і перезавантаженням терміналу. Банально - вийти з редактора я так і не зміг і чесно, навіть подумав, що редактор тупо глючить. Я навіть пам'ятаю, якось здивувався - як же млинець так вийшло, що такі розумні чуваки, які створили таку потужну штуку, як Git, могли вибрати такий архаїчний, тупий, незрозумілий і негарний (як мені спочатку здалося) редактор?

I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it.

- I Am Devloper (@ iamdevloper) 17 лютого 2014

Але потім мені стало цікаво, я почав копатися. Зізнаюся чесно, шлях до подолання власної ліні і напрацьованих звичок був чистий і дуже обов'язок. Але я анітрохи не шкодую про витрачений час і нерви. Зараз я використовую (і використовував) Vim-режим практично скрізь, де це можливо - WebStorm/RubyMine/PyCharm, Sublime Text, Visual Studio, Atom. Vim-режим у мене активований в Терміналі і навіть у Браузері.

Так, так, як виявилося, знаючи Vim-ові команди можна дуже ефективно перемикатися між вкладками, переходити за посиланнями, гортати вниз і вгору, шукати текст на сторінці і багато чого іншого.

Під Chrome існує аж цілих три розширення - найбільш популярний Vimium, менш популярний і трохи застарілий Vrome і бурхливо розвивається, молодий cVim. Я починав з першого, потім перейшов на Vrome. Справа в тому, що Vrome пропонує обалдену фічу - редагування тексту в сторонньому редакторі. Тобто йдеш, наприклад, на StackOverflow, щоб поставити питання, переходиш в область текстового поля і... натисканням комбінації клавіш відкривається Vim - можна вбивати текст, використовуючи всю його міць. При збереженні текст автоматично потрапляє назад до переглядача. Фантастика. На жаль, Vimium вбудованої такої підтримки поки не має. Хоча багато в чому перевершує Vrome, я недавно знову перейшов на Vimium і, як виявилося, багато багів були пофіксені, додалася функціональність і т. д. Хоча без підтримки зовнішнього редактора, звичайно, доводиться страждати. cVim - незважаючи на свою молодість, досить потужний і проект, що швидко розвивається, дуже хочеться сподівається, що автор і учасники проект не закинуть, як це сталося з Vrome.

Я не дуже часто використовую Firefox, але наскільки я знаю, там рулить Vimperator.

Vim - обалденная все таки річ, єдиний недолік Vim-а - звикнувши раз, звикаєш на все життя. Наприклад, мені тепер не вистачає Vim режиму в Скайпі, у Ворді, в Slack і т. д. Цікаво, що багато веб-сайтів впроваджують базову vim-навігацію - gmail, trello, github тощо.

Якщо ви хоч раз пробували Vim і так і змогли змусити себе звикнути, ви обов'язково повинні постаратися ще раз. Якщо ви хочете осягнути дзен Vim-а - наберіться терпіння. Запустіть і пройдіть vimtutor, пограйтеся в Vim Adventures. Намагайтеся не нервувати тому, що весь час доводиться згадувати/шукати шукати шукану комбінацію клавіш. Роздрукуйте шпаргалку. Спочатку вам буде здаватися, що вся ця овчинка не варто виділення і Vim жодним чином не робить вас більш продуктивним, а все навіть з точністю навпаки. Повірте мені на слово, знадобляться місяці щоб відчути всю принадність Vim-а. Через якийсь час ви навіть не будете замислюватися - пальці самі будуть бігати по клавіатурі, а для непосвяченого спостерігача ваші дії будуть виглядати сущим чаклунством. Хтось навіть якось пожартував - мовляв будь-яка мало-мальськи значуща Vim-ова комбінація зійде за Fatality в Mortal Kombat.

Ну що, заінтриговані? А тепер давайте поговоримо про справжнього редактора (жарт).

З тих пір, як я в перший раз відкрив для себе Vim пройшло, багато часу, але поступово мені стали відкриватися і недоліки Vim-a. Справа в тому, що Vim - це редактор. Зробити з нього повноцінний IDE не скажу що просто неможливо, але до біса складно. Та й потім, ми ж не тільки текст редагуємо, нам потрібен повноцінні пошук і заміна, intellisense, файловий менеджер, вбудована підтримка VCS, бажано вікно терміналу, багатомовність та інше та інше. Так, у Vim-а купа плагінів, їх можна підключати, їх можна до нескінченності налаштовувати і так далі, але в сутності Vim так за великим рахунком і залишиться - редактором. У цьому плані Sublime навіть нітрохи не гірше. Я обожнюю IDE від JetBrains. Webstorm, наприклад, просто відлітна штука. Що погано? А те, що і в тому і в іншому підтримка Vim-режиму не без нарікань.

Отже, хочеться мати середовище з підтримкою Vim режиму, але при цьому:

  • з більш зручною вбудованою мовою конфігурування;
  • зі зручним менеджером плагінів і достатньою різноманітністю оних;
  • з підтримкою декількох мов (input and localizations);
  • зі зручною навігацією за командами (аля Sublime).

І що в підсумку ми маємо? А маємо ми Emacs. Так, так, не дивуйтеся.

До вивчення Emacs мене підштовхнуло святова цікавість, а ще колега, який до Emacs років десять користувався Vim-ом, ну і знайомий, у якого я потягнув до себе конфігурацію для Vim-а (а надалі і для Emacs-а).

Спочатку злісний Emacs мене до себе зовсім не підпускав. Я ще жартував на роботі, мовляв у Emacs-а такого величезне его, що воно не влазить в мій комп'ютер. Щоб спробувати, я завантажив голий Emacs, запустив. Подивився. Не сподобалося. Потім спробував завантажити так званий Starter Kit - і воно не сподобалося. Ну не можу я без Vim режиму, хоч трісни. І ось тоді-то я і відкрив для себе Evil-mode. І тут я зрозумів, як же все таки був неправий у своїй ліні і треба було спробувати Emacs раніше.

Я тільки-тільки перейшов на Emacs і, мабуть, не стану давати будь-яких порад. Скажу тільки, що я дуже швидко усвідомив наскільки у нього гнучко-налаштовуване середовище. Emacs - це не редактор, це скоріше конструктор, з якого можна зібрати собі IDE, текстовий процесор, органайзер на свій колір і смак. Наприклад: я подумав, а чому б мої записки Evernote не вбивати прямо в Emacs? Знайшов плагін, встановив, налаштував - користуюся. Чудово. Другий приклад: мені доводиться досить часто писати англійською і користуватися тезаурусом. Тут опинилося під це плагінів аж кілька - довелося вибирати. Той, що я вибрав, відображає вікно зі списком слів-варіантів. Але мені ж потрібна повна автоматизація; потрібно, щоб при відкритті вікна з варіантами курсор сам стрибнув у те вікно. А потім, після того як я виберу відповідний варіант, міг би легко замінити їм шукане слово і закрити вікно вже за непотрібністю. Виявилося, подібні трюки дуже легко спрограмувати. І тепер мені не доводиться лізти в інтернет за тезаурусом, а пошук і підбір варіантів займає буквально секунди.

Завершуючи хочеться сказати, що, звичайно, можна до нескінченності сперечатися, який редактор краще. Але все ж я вважаю - справжній розробник повинен освоїти обидва. Чого я вам і бажаю. І тільки освоївши їх ви зрозумієте. навіщо сучасному програмісту потрібні редактори майже сорокарічної давності.

Image