Загальні
- :h[elp] keyword - відкрити довідку для ключового слова keyword
- :sav[eas] file - зберегти файл з вказаним іменем
- :clo[se] - закрити поточну панель
- :ter[minal] - відкрити термінал
- K - відкрити довідку (man) для слова під курсором
Переміщення курсору
- h - перемістити курсор ліворуч
- j - перемістити курсор вниз
- k - перемістити курсор вгору
- l - перемістити курсор праворуч
- gj - перемістити курсор вниз (багаторядковий текст)
- gk - перемістити курсор вгору (багаторядковий текст)
- H - переміститись на початок екрану
- M - переміститись на середину екрану
- L - переміститись на кінець екрану
- w - переміститись вперед на початок слова
- W - переміститись вперед на початок слова (слово може містити пунктуацію)
- e - переміститись вперед на кінець слова
- E - переміститись вперед на кінець слова (слово може містити пунктуацію)
- b - переміститись назад на початок слова
- B - переміститись назад на початок слова (слово може містити пунктуацію)
- ge - переміститись назад на кінець слова
- gE - переміститись назад на кінець слова (слово може містити пунктуацію)
-
% - переміститись до відповідного символу (відповідні пари: '()', '{}', '[]' - використовуйте
:h відповідна_пара
для детальнішої інформації) - 0 - переміститись на початок рядка
- ^ - переміститись на перший непробільний символ рядка
- $ - переміститись в кінець рядка
- g_ - переміститись на останній не пробільний символ рядка
- gg - переміститись на перший рядок документа
- G - переміститись на останній рядок документа
- 5gg or 5G - перемістити на п'ятий рядок
- gd - переміститись до локального оголошення
- gD - переміститись до глобального оголошення
- fx - перемістись до наступного символу x
- tx - переміститись до наступного символу x
- Fx - переміститись до попереднього символу x
- Tx - переміститись до наступного символу, перед яким є символом х
- ; - повторити попередні f, t, F чи T переміщення
- , - повторити попередні f, t, F чи T переміщення, в зворотному порядку
- } - переміститись до наступного параграфа (чи функції/блоку, коли редагується код)
- { - переміститись до попереднього параграфа (чи функції/блоку, коли редагується код)
- zz - центрувати курсор на екрані
- zt - position cursor on top of the screen
- zb - position cursor on bottom of the screen
- Ctrl + e - підняти видимий вміст екрану на один рядок (без переміщення курсора)
- Ctrl + y - опустити видимий вміст екрану на один рядок (без переміщення курсора)
- Ctrl + b - переміститись назад на один екрана
- Ctrl + f - переміститись на один екран вперед
- Ctrl + d - переміститись вперед на пів екрана
- Ctrl + u - переміститись назад на пів екрана
Режим вставки - вставка/додавання тексту
- i - вставка перед курсором
- I - вставка на початку рядка
- a - вставка (додавання) після курсору
- A - вставка (додавання) у кінець рядка
- o - додавання нового рядка під поточним
- O - додавання нового рядка над поточним
- ea - вставка (додавання) в кінці слова
- Ctrl + h - видалення символу перед курсором в режимі введення тексту
- Ctrl + w - видалення слова перед курсором в режимі введення тексту
- Ctrl + j - перехід на новий рядок в режимі введення тексту
- Ctrl + t - додати відступ (перемістити праворуч) рядок на один <code>shiftwidth</code> в режимі введення тексту
- Ctrl + d - прибрати відступ (перемістити ліворуч) рядок на один <code>shiftwidth</code> в режимі введення тексту
- Ctrl + n - вставити (автодоповнення) наступне співпадіння перед курсором в режимі введення тексту
- Ctrl + p - вставити (автодоповнення) попереднє співпадіння перед курсором в режимі введення тексту
- Ctrl + rx - вставити вміст регістру x
- Ctrl + ox - тимчасово перейти в нормальний режим для виконання однієї команди x нормального режиму.
- Esc or Ctrl + c - вихід з режиму вставки
Редагування
- r - замінити один символ
- R - замінити декілька символів, поки не буде натиснута ESC
- J - приєднати рядок нижче до поточного з додатковим пробілом між ними
- gJ - приєднати рядок нижче до поточного без додаткового пробілу між ними
- gwip - переформувати параграф
- g~ - змінити регістр символу і перемістити курсор далі
- gu - перевести символ до нижнього регістру і перемістити курсор далі
- gU - перевести символ до верхнього регістру і перемістити курсор далі
- cc - замінити увесь рядок
- c$ or C - замінити до кінця рядку
- ciw - замінити все слово
- cw or ce - замінити до кінця слова
- s - видалити символ та замінити текст
- S - видалити строчку та замінити текст (те ж що й cc)
- xp - переставити місцями дві букви (видалити й вставити символ)
- u - скасувати
- U - відновити (скасувати видалення) останнього зміненого рядка
- Ctrl + r - повторити
- . - повторити останню команду
Виділення тексту (візуальний режим)
- v - увімкнути режим виділення тексту, виділити рядки, потім виконати команду (наприклад, y-копіювання)
- V - увімкнути режим виділення рядками
- o - переміститись на інший кінець виділеної частини
- Ctrl + v - увімкнути режим виділення блоків
- O - перемістити на інший кут виділеного блоку
- aw - виділити слово
- ab - блок у ()
- aB - блок у {}
- at - блок у <>
- ib - внутрішній блок у ()
- iB - внутрішній блок у {}
- it - внутрішній блок у <>
- Esc or Ctrl + c - вийти з режиму виділення тексту
Візуальні команди
- > - змістити текст праворуч
- < - змістити текст ліворуч
- y - скопіювати виділений текст
- d - видалити виділений текст
- ~ - перемкнути регістр
- u - змінити регістр виділеного тексту на нижній
- U - змінити регістр виділеного тексту на верхній
Регістри
- :reg[isters] - показати вміст регістрів
- "xy - скопіювати в регістр x
- "xp - вставити вміст регістру x
- "+y - скопіювати в системний буфер обміну (пов'язаний регістр)
- "+p - вставити з системного буферу обміну (пов'язаного регістру)
0 - останнє копіювання
" - безіменний регістр, останнє видалення чи копіювання
% - поточне ім'я файлу
# - альтернативне ім'я файлу
* - буфер обміну (перший X11)
+ - буфер обміну (буфер X11)
/ - останній шаблон пошуку
: - останній командний рядок
. - останній вставлений текст
- - останнє невелике (менше рядка) видалення
= - регістр виразу
_ - регістр - чорна діра
Відмітки (закладки)
- :marks - список відміток
- ma - позначити поточну позицію відміткою A
- `a - перейти до позиції відмітки A
- y`a - скопіювати текст до позиції A
- `0 - перейти до позиції, на якої вийшли з Vim перед цим
- `" - перейти до позиції останнього редагування
- `. - перейти до позиції останньої зміни в цьому файлі
- `` - перейти до позиції перед останнім переходом
- :ju[mps] - список переходів
- Ctrl + i - перейти до новіших позицій в списку переходів
- Ctrl + o - перейти до пізніших позицій в списку переходів
- :changes - список змін
- g, - перейти до більш свіжої позиції в списку змін
- g; - перейти до більш пізнішої позиції в списку змін
- Ctrl + ] - перейти до тегу під курсором
Макроси
- qa - записати макрос в <kbd>a</kbd>
- q - Зупинити запис макроса
- @a - запустити макрос <kbd>a</kbd>
- @@ - Запустити ще раз останній макрос
Вирізати й вставити
- yy - скопіювати рядок
- 2yy - скопіювати 2 рядки
- yw - скопіювати слово
- yiw - скопіювати слово під курсором
- yaw - скопіювати слово під курсором і пробіл після чи до нього
- y$ or Y - скопіювати до кінця рядка
- p - вставити вміст буфера обміну після курсору
- P - вставити вміст буфера обміну перед курсором
- gp - вставити вміст буферу після курсору і перемістити курсор на кінець вставленого тексту
- gP - вставити вміст буферу перед курсором і перемістити курсор на кінець вставленого тексту
- dd - видалити (вирізати) рядок
- 2dd - видалити (вирізати) 2 рядки
- dw - видалити (вирізати) слово
- diw - видалити (вирізати) слово під курсором
- daw - видалити (вирізати) слово під курсором з пробілом
- :3,5d - delete lines starting from 3 to 5
e.g.
:.,$d - From the current line to the end of the file
:.,1d - From the current line to the beginning of the file
:10,1d - From the 10th line to the beginning of the file
- :g/{pattern}/d - delete all lines containing pattern
- :g!/{pattern}/d - delete all lines not containing pattern
- d$ or D - видалити (вирізати) до кінця рядка
- x - видалити (вирізати) символ
Вирівнювання тексту
- >> - додати відступ (перемістити вправо) рядок на один <code>shiftwidth</code>
- << - прибрати відступ (перемістити вліво) рядок на один <code>shiftwidth</code>
- >% - додати відступ для тексту в середині блока, обмеженого () чи {} (курсор на дужці)
- <% - de-indent a block with () or {} (cursor on brace)
- >ib - додати відступ для тексту в середині блока, обмеженого ()
- >at - додати відступ для блоку в середині тега, обмеженого <>
- 3== - вирівняти 3 рядки
- =% - вирівняти блок в середині () чи {} (курсор на дужці)
- =iB - вирівняти текст між {}
- gg=G - вирівняти весь буфер
- ]p - вставити і підігнати відступ для поточного рядка
Вийти й зберегти
- :w - зберегти файл, але не виходити
- :w !sudo tee % - зберегти файл, використовуючи <kbd>sudo</kbd>
- :wq or :x or ZZ - зберегти файл та вийти
- :q - вийти (не працює у випадку якщо зміни не збережено)
- :q! or ZQ - вийти та втратити зміни, що незбережені
- :wqa - зберегти і вийти для всіх вкладинок
Пошук та заміна
- /pattern - пошук шаблону
- ?pattern - зворотній пошук шаблону
- \vpattern - 'дуже чарівний' шаблон - не буквено-цифрові символи інтерпретуються як спеціальні символи регулярного виразу (екранування не потрібно)
- n - повторити пошук у тому ж напрямку
- N - повторити пошук у зворотному напрямку
- :%s/old/new/g - замінити усі входження шаблону у файл на вказане значення
- :%s/old/new/gc - замінити усі входження шаблону у файл на вказане значення з підтвердженням
- :noh[lsearch] - прибрати виділення пошуку
Пошук в декількох файлах
- :vim[grep] /pattern/ {`{file}`} - шукати шаблон в декількох файлах
- :cn[ext] - перейти до наступного знайденого
- :cp[revious] - перейти до попереднього знайденого
- :cope[n] - відкрити вікно, що містить список знайденого
- :ccl[ose] - закрити вікно зі знайденим (quickfix)
Вкладинки
- :tabnew or :tabnew {page.words.file} - відкрити файл у новій вкладинці
- Ctrl + wT - перемістити поточне вікно у власну вкладинку
- gt or :tabn[ext] - переключитись на наступну вкладинку
- gT or :tabp[revious] - переключитись на попередню вкладинку
- #gt - переключити на вкладинку з номером #
- :tabm[ove] # - перемістити поточну вкладинку на # позицію (нумерація з 0)
- :tabc[lose] - закрити поточну вкладинку з усіма її вікнами
- :tabo[nly] - закрити усі вкладинки окрім поточної
-
:tabdo command - запустити команду
command
в всіх вкладинках. Тобто:tabdo q
- закрити всі відкриті вкладинки
Робота з декількома файлами
- :e[dit] file - редагувати файл у новому буфері
- :bn[ext] - перейти до наступного буфера
- :bp[revious] - перейти до попереднього буфера
- :bd[elete] - видалити буфер (закрити файл)
- :b[uffer]# - перейти до буферу номер #
- :b[uffer] file - перейти до буферу по імені файлу
- :ls or :buffers - показати список відкритих буферів
- :sp[lit] file - відкрити файл у новому буфері й розділити вікно
- :vs[plit] file - відкрити файл у новому буфері й вертикально розділити вікно
- :vert[ical] ba[ll] - редагувати всі буфери в вертикальних вікнах
- :tab ba[ll] - редагувати всі буфери як вкладинки
- Ctrl + ws - розділити вікно
- Ctrl + wv - розділити вікно вертикально
- Ctrl + ww - переключення вікон
- Ctrl + wq - закрити вікно
- Ctrl + wx - обміняти поточне вікно з наступним
- Ctrl + w= - зрівняти висоту і ширину для всіх вікон
- Ctrl + wh - перемістити курсор у ліве вікно (вертикальний розподіл)
- Ctrl + wl - перемістити курсор у праве вікно (вертикальний розподіл)
- Ctrl + wj - перемістити курсор у вікно нижче (горизонтальний розподіл)
- Ctrl + wk - перемістити курсор у вікно вище (горизонтальний розподіл)
- Ctrl + wH - розгорнути поточне вікно в повну висоту ліворуч (саме ліве вертикальне вікно)
- Ctrl + wL - розгорнути поточне вікно в повну висоту праворуч (саме праве вертикальне вікно)
- Ctrl + wJ - розгорнути поточне вікно в повну ширину внизу (саме нижнє горизонтальне вікно)
- Ctrl + wK - розгорнути поточне вікно в повну ширину вверху (саме верхнє горизонтальне вікно)
Diff
- zf - вручну виділити блок для згортання, використовуючи команди переміщення
- zd - видалити згорнутий блок під курсором
- za - згорнути/розгорнути блок під курсором
- zo - розгорнути блок під курсором
- zc - згорнути блок під курсором
- zr - розгорнути вса згорнуті блоки на один рівень
- zm - згорнути всі блоки на один рівень
- zi - ввімкнути/вимкнути режим згортання
- ]c - перейти до початку наступного блоку змін
- [c - перейти до початку попереднього блоку змін
- do or :diffg[et] - взяти зміну з іншого буферу
- dp or :diffpu[t] - перемістити зміну в інший буфер
- :diffthis - зробити поточне вікно частиною Diff
- :dif[fupdate] - оновити різницю
- :diffo[ff] - вимкнути режим Diff для поточного вікна