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"— візуально виділити лапки і їх вміст
Вставка і візуальна робота
: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), але наведені вище є найбільш універсальними та корисними для щоденної роботи.)