April 25

⚡ Advanced Vim Cheat Sheet

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

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


📂 Покращена навігація по файлу

  • '' — повернення до попередньої позиції курсора (наприклад, після переходу по пошуку)
  • gi — переміститись у позицію, де востаннє редагувався текст у Insert режимі
  • gd — перейти до визначення змінної або функції
  • % — стрибок між відкриваючою і закриваючою дужкою/лапкою/фігурними дужками ((), {}, []).
  • zz — прокрутити так, щоб поточний рядок був по центру екрану.
  • zt, zb — прокрутити так, щоб поточний рядок був зверху або знизу.
  • Ctrl-d, Ctrl-u — прокрутити на півсторінки вниз/вгору.
  • Ctrl-e, Ctrl-y — прокрутити екран на 1 рядок вниз/вгору без переміщення курсора.

✂️ Робота з текстом

усередині дужок, лапок, тегів

Всі ці команди працюють з: (), {}, [], <>, "", ''
  • di" — видалити текст всередині подвійних лапок
  • ci' — змінити текст всередині одинарних лапок
  • da( — видалити дужки і все всередині
  • yi{ — скопіювати текст усередині фігурних дужок
  • va" — візуально виділити лапки і їх вміст

💡 Шаблон:

  • d (delete), c (change), y (yank) + i (inside) або a (around) + символ

Вставка і візуальна робота

  • :sort — сортує виділені рядки (додайте ! для зворотного порядку)
  • gU / gu — зміна регістру тексту
  • o / O — відкрити новий рядок для введення тексту oпісля поточного / Oперед поточним
  • u / Ctrl+R — скасувати останню дію (undo) / повторити скасоване (redo). Ви можете багаторазово використовувати u для відміни кількох змін поспіль, а Ctrl+R – щоб повернути їх назад.
  • . (крапка) — повторити останню виконану команду редагування​. Після будь-якої дії (видалення, вставки тощо) . виконає її знову. Наприклад, введіть новий рядок командою o і натисніть Esc, а потім 5. – створиться ще 5 таких самих рядків

🔁 Макроси (автоматизація рутини)

  • qq → дії → q — записати макрос у q
  • @q — виконати макрос
  • 100@q — повторити 100 разів
  • :'<,'>normal @q — застосувати макрос до виділених рядків

🔎 Пошук і заміна

  • /слово — пошук слова
  • n / N — перейти до наступного / попереднього знайденого результату пошуку
  • :noh — прибрати підсвітку, після пошуку
  • :%s/old/new/g — заміна у всьому файлі з old (старе слово) на new (нове слово)
  • :%s/\s\+$//e — прибрати пробіли в кінці рядків

📁 Робота з файлами та буферами

  • :Explore — файловий менеджер (netrw)
  • :e! — скасувати всі зміни та перезавантажити файл
  • :split файл.cpp — відкрити в новому вікні
  • Ctrl-w w — міжвіконна навігація

🔌 Найкорисніші плагіни Vim

  • NERDTree — популярний файловий провідник у Vim. Дає змогу виводити дерево директорій збоку редактора, відкривати файли і папки одним натисканням. Дуже зручний для навігації по проекту прямо в Vim​. На зображенні ліворуч показано панель NERDTree, що відображає дерево файлів проекту.
  • vim-surround — плагін для маніпуляції оточеннями символів. Дозволяє легко додавати, змінювати або видаляти парні символи навколо тексту – лапки, дужки, HTML-теги тощо однією командою​. Наприклад, команда cs"' замінить оточення з подвійних лапок на одинарні для рядка під курсором, а ds( видалить круглі дужки навколо фрагмента. Це значно прискорює правки коду, пов’язані з дужками і лапками.
  • vim-fugitive — потужний Git-плагін для Vim, який інтегрує команди Git прямо в редактор. Fugitive дозволяє виконувати більшість Git-операцій: перегляд статусу (:Gstatus), диференцій (:Gdiff), логів, blame, коміт прямо з Vim. Для розробника, що працює з Git у консолі, Fugitive швидко стане незамінним.
  • vim-gitgutter — відображає індикатори змін у полі зліва від коду для файлів під Git-контролем. Плагін показує значки поруч з номерами рядків для кожного доданого, зміненого чи видаленого рядка, порівняно з останнім комітом​. Це дає швидкий візуальний фідбек про те, які рядки ви змінили. Крім того, vim-gitgutter надає команди для переходу між зміненими місцями та швидкого стаджинг/відміни конкретних змін (hunks) прямо з Vim. Альтернативами є vim-signify і GitSigns (Neovim).
  • fzf.vim — інтеграція інструменту fzf (fuzzy finder) з Vim для надшвидкого пошуку файлів, буферів, історії команд тощо. Fzf – це загальне консольне засіб для нечіткого пошуку, що інтерактивно відфільтровує список елементів (файлів, рядків, команд) за поданим рядком запиту​. Плагін додає команди :Files, :Buffers, :Rg та інші, які відкривають плаваюче вікно пошуку. Ви можете почати вводити назву файлу чи фрагмент текста – і список миттєво звузиться до відповідних елементів. Вибраний файл або результат пошуку відкриється у Vim. fzf.vim значно прискорює навігацію у великих проектах, де набагато ефективніше знайти файл по кількох літерах, ніж пам’ятати довгі шляхи.
  • coc.nvim (Conquer of Completion) — повноцінний механізм автодоповнення та мовного серверу (LSP) у Vim. Працює як хост для мовних серверів (аналог VS Code) на базі Node.js, надаючи «інтелектуальні» підказки коду, автодоповнення, перейменування, перехід до визначення і т.д. у Vim8/Neovim​. Після встановлення coc.nvim можна додати розширення (наприклад, coc-tsserver для TypeScript, coc-pyright для Python і т.д.), які в режимі реального часу підсвічують помилки, показують документацію по наведенням, автодоповнюють код так само, як це робить VS Code. Для досвідченого користувача Vim цей плагін відкриває можливості сучасних IDE без потреби залишати улюблений редактор.

(Звісно, існує багато інших чудових плагінів – менеджери сніпетів (UltiSnips), швидка навігація (EasyMotion/vim-sneak), покращення інтерфейсу (vim-airline), але наведені вище є найбільш універсальними та корисними для щоденної роботи.)