top of page

Vim — кіберпанковий редактор чи альтернатива сучасній IDE

Фото автора: Катерина ШевченкоКатерина Шевченко


«Коли вперше відкриваєш Neovim — ніби сідаєш в болід F1. З одного боку, це швидкий, потужний автомобіль, а з іншого — а де тут кнопка cтарт?» — говорить Іван Кучер, Back-End Developer в Universe Group. Декілька років тому він спробував популярний форк Vim і залишився. На його думку, попри перші складнощі та довге звикання, це найшвидший редактор коду, і його можна кастомізувати під себе. 


У цьому матеріалі розбираємося, як зʼявився Vim, а також розповідаємо про його попередника та сучасний форк Neovim. Зʼясовуємо, чому методи редагування 1970-х років досі залишаються популярними, та що змушує розробників витрачати тижні на опанування цього інструменту. Пояснюємо, як влаштовані команди, що робить його справді швидким та ділимося корисними ресурсами для вивчення. Розробники з бізнесів екосистеми Genesis пояснили, в чому полягає філософія Vim, поділилися улюбленими фічами та порадами, з чого почати вивчення. 



Модальне редагування


Що може бути складного в редагуванні файлів? Механіка проста: перемістити курсор у потрібне місце та набрати текст. Для навігації використовуємо скрол миші, тачпод, стрілки. Для справжніх «ніндзя» є гарячі клавіші, щоби перестрибувати рядками чи абзацами. 


Проте у 1970-х роках клавіатури виглядали зовсім по-іншому — на них не було стрілок. Миші були щойно запатентованим експериментальним девайсом, який стане популярним лише у наступному десятилітті. Побачити повний текст на моніторі було неможливо через обмежені ресурси компʼютерів. Їхня оперативна памʼять вираховувалася у кілобайтах, тому робота у графічних інтерфейсах була дуже ресурсозатратною, і доводилося працювати лише з окремими рядками. І найстрашніше — Ctrl+C / Ctrl+V на той час ще не вигадали. 


Тоді для редагування тексту використовували спеціальні команди — сьогодні вони виглядають дивно, проте досі широко вживаються. Чому ж 2025 року, коли створені найзручніші миші, тачпади та способи навігації текстом, розробники досі використовують методи 70-х років? Все просто — тоді вигадали найшвидший спосіб навігації у тексті — модальне редагування.


В чому полягає його суть: 

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

  • Для набору тексту потрібно перейти у спеціальний режим. 


«Більша частина роботи з кодом — це внесення змін, а не написання нового коду. Розробники мусять переходити з файлу у файл, знаходити потрібні рядки, редагувати. В той час як звичайне редагування оптимізоване для набирання нового коду, модальне —  для внесення змін», — пояснює Марк Мотлюк, Software Engineer в Genesis.


Все почалося з Vi


Датою народження редактору Vim вважається 1991 рік, проте ця історія бере початок 1976 року. Цього року Білл Джой, легендарний інженер та співзасновник Sun Microsystems, створив  текстовий редактор Vi для операційної системи Unix. За легендою, Джой створив його всього за один вікенд, проте Vi був справжнім проривом. 



bill-joy-keyboard
Клавіатура, на якій Білл Джой написав Vi. Джерело: спільнота Vim на Reddit

Він пропонував переключатися між командним і режимом вставки з допомогою клавіатури. Це дозволяло виконувати операції редагування набагато швидше, ніж у багатьох інших текстових редакторах того часу, де кожна операція потребувала кількох кроків. Завдяки своїй ефективності, Vi швидко став стандартним редактором у багатьох Unix-системах.

Далі редактор продовжував розвиватися через появу різних клонів та покращених версій. Одним із перших був Stevie (ST Editor for VI Enthusiasts), створений Тімом Томпсоном у для комп'ютера Atari ST. 


code-editors-evolution
Еволюція модальних редакторів коду

1988 року нідерландський програміст Брам Муленар придбав комп'ютер Amiga та шукав версію редактора Vi для цієї платформи. Так і не знайшовши, він звернув увагу на Stevie та на його основі розпочав розробку власної версії. В процесі він покращив продуктивність та додав нові функції, такі як багаторівневе скасування дій. Перший публічний реліз «Vi IMitation» відбувся 1991 року, а згодом редактор був перейменований на «Vi IMproved» (Vim) та підтримував роботу на різних платформах, включаючи MS-DOS та Unix. 


Наступні 30 років Муленар присвятив розвитку та вдосконаленню Vim, сформувавши навколо нього велике комʼюніті. В репозиторії на GitHub, який зʼявився 2015 року, Муленар особисто вніс переважну кількість змін —  понад 16 тисяч комітів. Він працював над Vim майже щодня. Наприклад, так виглядав 2020 рік Брама — жодного дня без комітів. 


bram-moolenaar-github
Активність Брама Муленара в репозиторії Vim

Після його смерті 2023 року комʼюніті продовжило роботу над редактором. Розробку очолив Крістіан Брабандт, Версія 9.1.658, випущена 2024 року, була присвячена памʼяті Брама Муленара. 


Сьогодні Vim має вбудовану підтримку для понад 200 мов програмування та форматів файлів, а також підтримує чимало плагінів, які легко встановлюються та дозволяють керувати додатковими модулями, адаптуючи редактор під потреби користувача.


«Я довго користувався Linux, і мені подобалася ідея максимального налаштування системи. Так я відкрив для себе Tiling Window Managers — мінімалістичне середовище, яке автоматично керує вікнами без зайвих елементів UI. Vim мене зачепив саме цим підходом: мінімалізм, жодного зайвого — тільки код на весь екран», — ділиться Марк Мотлюк.


Neovim


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


Так, 2014 року бразильський програміст Тіаго де Арруда запропонував патч для підтримки багатопоточності Vim, проте його відхилили. Тоді він створив нову версію редактора з покращеними можливостями — Neovim. Основні його покращення включали вбудовану підтримку Language Server Protocol (LSP), асинхронного введення/виведення та можливість використання скриптів на мові Lua через інтерпретатор LuaJIT.


«Завдяки вбудованій підтримці LSP, Neovim легко налаштувати під різні мови програмування. Це значно спрощує процес порівняно з Vim, де це потрібно було конфігурувати вручну. Крім того, вони пришвидшили редактор, додавши асинхронні операції та підтримку для плагінів, які тепер працюють паралельно і не конфліктують один з одним» — каже Іван Кучер.

«Одним з недоліків Vim, на мою думку, був скриптинг. Vimscript виглядав дуже дивно, це незручна й незрозуміла мова. В Neovim для написання скриптів замість нього використовується Lua, — з нею значно приємніше працювати та кастомізувати редактор під себе», — розповідає Антон Уваренко, Golang Developer в Promova.


twitter-neovim-10-years

З моменту свого створення Neovim продовжує активно розвиватися, залучаючи спільноту розробників для впровадження нових функцій та покращень. Спільнота r/neovim на Reddit налічує понад 119 000 учасників, а репозиторій Neovim на GitHub має понад 86 000 зірок (Vim має 37 000). У результатах опитування Stack Overflow популярність Neovim щороку зростає. У звіті 2024 року Neovim викликає найбільше захоплення у розробників серед усіх редакторів — 83%. 



Як працює Neovim


Магія швидкості роботи у Neovim полягає у таких факторах: 


  1. Легковажність. Порівняно з VS Code, який працює на базі Electron, та продуктів JetBrains, які написані на Java та використовують JVM, Neovim займає мінімум пам'яті. Він не потребує потужних системних ресурсів комп'ютера та працює навіть у найпростіших терміналах та серверних середовищах.

  2. Модальність. У ньому є декілька режимів, які дозволяють виконувати будь-які операції без необхідності перемикатися між мишкою та клавіатурою. 


Режими: 


  • Normal mode – для навігації та редагування.

  • Insert mode – дозволяє вводити текст, як у звичайному редакторі.

  • Visual mode – дає змогу виділяти текст для подальшої обробки.

  • Command-line mode – для виконання команд.


  1. Комбінації клавіш. Майже всі операції виконуються за допомогою комбінацій клавіш. Користувачі витрачають мінімум часу на пошук меню або інструментів.

  2. Навігація. Vim та його похідні мають потужні механізми пошуку і переміщення по тексту. За допомогою команд на кшталт / або ? можна швидко знайти текст, а комбінації клавіш, як f і t, дозволяють переміщатись до конкретних символів у рядку без зайвих рухів.

  3. Макроси. Якщо потрібно виконати повторювану задачу, можна записати макрос, який виконується за одну команду.


«Перша спроба працювати у Neovim викликала багато фрустрації: важко було виконати навіть базові операції. Але залишається відчуття, що можна робити все набагато швидше, тому пробуєш знову і знову. І коли звикаєш, починаєш розганятися — і все стає набагато простішим, — згадує Антон Уваренко. — Серед найбільш корисних функцій: макроси, які дуже допомагають автоматизувати монотонні завдання (наприклад, прописувати повторювані теги чи виконувати певні дії на конкретних рядках коду) та пайпінг (дозволяє передавати дані з термінальних команд в редактор Vim та застосовувати їх до буфера). Це корисно, наприклад, для роботи з JSON файлами, коли потрібно обробити їх і привести до більш зручного вигляду».



Як влаштовані команди


Переміщення курсора відбувається за допомогою клавіш h, j, k та l (цей підхід зберігся з 1970-х). Спершу здається, що команди визначаються рандомним способом, але насправді це досить зрозуміло. Vim працює за логікою природної мови: дієслово (verb) + уточнення (modifier) + іменник (noun).



Це базова модель, яка забезпечує фундаментальну логіку роботи у Vim, але на більш складному рівні додаються регістри, макроси, розширені модифікатори та мапінги, що значно збільшує можливості Vim.


Брам Муленар на лекції з ефективного редагування текстів пояснював: «Уявіть, що ви написали код, і вас попросили змінити назву функції. Ви перевіряєте весь файл та виправляєте — це нудно, довго і створює ризик помилок. А тепер уявіть, що таких назв — десять. Або сто. Що, якби ви могли зробити це натисканням кількох клавіш? У цьому і полягає філософія Vim — знайдіть операцію, яку часто повторюєте, налаштуйте її так, щоб вона виконувалася за пару натискань, — і ви миттєво станете швидшими». 


Спільнота Neovim створила плагіни для автоматизації будь-якої рутини, розповідає Дай Зионг Ле, Head of Engineering у HOLYWATER.


«Питання, що можна оптимізувати у своїй роботі в Neovim привело мене до зручного плагіну. Якщо ти постійно працюєш з певними файлами, можна забіндити кожен з них на окрему кнопку, та швидко перемикатися. Це зручніше, ніж постійно шукати ці файли через пошук чи переходити між вкладками. Крім того, при переході ти знаходишся в тому самому місці, де зупинився — наприклад, в одному файлі на початку, а в іншому в кінці», — каже Зионг. 


Налаштування та дистрибутиви


Використовувати Vim/Neovim у його базовому сирому вигляді — це досить погана ідея, вважає Марк Мотлюк. «Щоби зробити його зручним середовищем для роботи, потрібно чимало фічей докрутити власноруч, написавши величезні конфіги. Вони можуть ламатися через оновлення чи несумісність плагінів. Менеджерити ці речі власноруч — досить складна задача», — пояснює він. 


Дистрибутив — це конфігурація, створена іншим розробником. Фактично це набір комбінацій клавіш, плагінів та інших налаштувань. NvChad — один з найпопулярніших дистрибутивів Neovim. Крім нього є LazyVim, LunarVim, AstroNvim. «Я спробував кілька з них і вибрав AstroVim через його зручні дефолтні налаштування й AstroNvim Community Repository — збірки плагінів для різних цілей. Зараз я використовую його для всього», — каже Марк.


«Я натрапив на YouTube на відео, де один хлопець показував, як налаштував NeoVim під веброзробку, зокрема для TypeScript, Node і так далі. Він створив крутий репозиторій, де зібрав усі ці конфігурації з плагінами, і навіть надав PDF із хоткеями, як це працює і як налаштовується. Це був ідеальний старт для мене, — згадує Іван Кучер. Водночас, на його думку, використання чужих конфігурацій не допоможе, якщо ви не вивчили базовий функціонал і як ним користуватись. 


Дай Зионг Ле вперше дізнався про Neovim в лайф-кодингах технічних блогерів: «Мене вразило, як швидко вони пишуть код та орієнтуються в терміналі. Тоді я почав досліджувати цей інструмент і заглиблюватися в нього». На його думку, швидкість не з'явиться, поки не налаштуєш цей редактор під себе. «Під кастомізацією я маю на увазі розуміння свого робочого процесу, як ти запускаєш сервер, налаштовуєш середовище, працюєш із вікнами та іншими інструментами, та автоматизацію цих етапів», — вважає Зионг. 


Ще одна суперсила Neovim — робота в терміналі та підтримка мультиплексії (можливість відкривати декілька термінальних вікон одночасно). Завдяки цьому можна працювати з кількома проєктами в одному терміналі, зберігаючи при цьому фокус. «Таке поєднання всіх цих інструментів створює потужну екосистему, де можна використовувати різні командні інструменти одночасно, як-от термінальний мультиплексор, команди Linux для підрахунку рядків, пошуку і так далі. Якщо вивчити цю систему, вона значно спрощує роботу і навіть прискорює її», — пояснює Зионг.


За його словами, у всіх редакторах є підказки для коду, можливість переходити між методами чи переглядати сигнатури функцій, але не всі розуміють, як це працює. «Коли ти налаштовуєш Neovim, ти так чи інакше зіштовхуєшся з цими механізмами та більше дізнаєшся про те, як це працює на глибшому рівні, як взаємодіють внутрішні механізми, і це дійсно цікаво».



Як вивчити Neovim


  1. Перший крок в опануванні модального редагування — навчитися друку десятьма пальцями. Наприклад, з допомогою ресурсу Keybr.

  2. Навчання базовим командам для переміщення по тексту, видалення, копіювання та вставки. Для цього є декілька корисних ресурсів, які навчають у форматі гри. Наприклад, Vimified та Vim Adventures.

  3. Встановлення Vim-плагіну у знайоме середовище. «Відразу почати працювати у Vim складно, бо продуктивність падає до нуля. Але якщо просто використовувати Vim-режим для редагування в інших середовищах — це досить зручно», — пояснює Марк. У цьому режимі варто відпрацювати основні команди навігації. 

  4. Vim працює в терміналі, тому важливо опанувати основи роботи з командним рядком, щоб ефективно використовувати всі можливості редактора.

  5. Встановіть плагіни, які допоможуть вам покращити роботу з Vim — автодоповнення, підсвітки синтаксису та лінтингу. Використовуйте готові дистрибутиви.

  6. Практикуйтеся на реальних проєктах чи вивчайте додаткові матеріали — статті, відео.

  7. Вивчайте розширені можливості Vim та кастомізуйте редактор під себе, щоби створити оптимальне середовище.


Корисні ресурси:


Водночас варто прагматично ставитися до цього інструменту.


«NeoVim чи Vim — це не золотий грааль, який вирішить всі проблеми. Якщо ви працюєте у VSCode або WebStorm, у вас все оптимізовано і налаштовано, нічого не заважає, і ви задоволені перфомансом, то немає сенсу переходити на інший редактор», — вважає Іван Кучер.


Що далі


Хоча комʼюніті Vim/Neovim постійно додає плагіни та фічі з використанням ШІ (автокомпліт, копайлот, чат з ШІ тощо), навряд ці продукти висунуть нові ідеї застосування ШІ. 

«Avante — плагін, який приносить ідеї Cursor у Neovim. Він дозволяє виділяти код, запитувати ШІ про нього або просити внести зміни. Хоча ШІ-функції у Vim точно будуть розвиватися, глобально він залишається нішевим. Його розвиток не буде таким стрімким, як, наприклад, у Zed, у якому нещодавно додано модель, яка передбачує наступний крок розробника — ділиться Марк. — Проте я не думаю, що Vim зникне. Він стабільний, у нього є велика база користувачів, і це те, що буде популярним ще довго».


Neovim схожий на нескінченну конструкцію Lego, яку ви можете формувати та налаштовувати на свій розсуд, і саме тому люди повертаються до цієї концепції сьогодні.




© 2035 by Business Name. Made with Wix Studio™

bottom of page