Навіщо 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? Знайшов плагін, встановив, налаштував — користуюся. Здорово. Другий приклад: мені доводиться досить часто писати англійською і користуватися тезаурусом. Тут виявилося під це аж кілька плагінів — довелося вибирати. Той, що я вибрав, відображає вікно зі списком слів-варіантів. Але мені ж потрібна повна автоматизація; потрібно, щоб після відкриття вікна з варіантами курсор сам стрибнув у вікно. А потім, після того як я виберу підходящий варіант, легко міг би замінити їм шукане слово і закрити вікно вже за непотрібністю. Виявилося, подібні трюки дуже легко запрограмований. І тепер мені не доводиться лізти в інтернет за тезаурусом, а пошук і підбір варіантів займає буквально секунди.

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

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.