Общее
- :help keyword - открыть помощь по ключевому слову
- :o file - открыть file
- :sav file - сохранить весь текщий буфер как file
- :close - закрыть текущую панель
- K - открыть справочное руководство для слова под курсором
Перемещение курсора
- h - передвинуть курсор влево
- j - передвинуть курсор на одну фактическую строку вниз
- k - передвинуть курсор на одну фактическую строку вверх
- l - передвинуть курсор вправо
- gj - передвинуть курсор на одну видимую строку вниз
- gk - передвинуть курсор на одну видимую строку вверх
- H - переместиться к началу экрана
- M - переместиться к середине экрана
- L - переместиться к концу экрана
- w - переместиться вперед на начало слова
- W - переместиться вперед на начало слова (слово может содержать пунктуацию)
- e - переместиться вперед на конец слова
- E - переместиться вперед на конец слова (слово может содержать пунктуацию)
- b - переместиться назад на начало слова
- B - переместиться назад на начало слова (слово может содержать пунктуацию)
- % - переместиться к парному символу (по умолчанию поддерживаются: '()', '{}', '[]' - подробнее по команде
:h matchpairs
в vim)
- 0 - переместиться на начало строки
- ^ - переместиться на первый непробельный символ строки
- $ - переместиться на конец строки
- g_ - переместиться к последнему непустому символу в строке
- gg - переместиться на первую строку документа
- G - переместиться на последнюю строку документа
- 5G - переместить на пятую строку
- fx - переместиться к следующему вхождению символа x в текущей строке
- tx - установить курсор за следующим вхождением символа x в строке
- Fx - переместиться на предыдущее вхождение символа x в текущей строке
- Tx - установить курсор за предыдущим вхождением символа x в строке
- ; - повторить предыдущее f, t, F или T перемещение
- , - повторить предыдущее f, t, F или T перемещение, в обратном направлении
- } - переместиться к следующему параграфу (или функции/блоку при редактировании кода)
- { - переместиться к предыдущему параграфу (или функции/блоку при редактировании кода)
- zz - сдвинуть весь буфер по вертикали вместе с курсором, так чтобы курсор оказался в центре
- Ctrl + b - переместиться назад на целый экран
- Ctrl + f - переместиться вперед на целый экран
- Ctrl + d - переместиться вперед на половину экрана
- Ctrl + u - переместиться назад на половину экрана
Совет: Добавьте число перед командой перемещения курсора для того, чтобы повторить её. Например, 4j перемещает курсор на 4 строки вниз.
Режим вставки - вставка/добавление текста
- i - вставка перед курсором
- I - вставка в начало строки
- a - вставка (добавление) после курсора
- A - вставка (добавление) в конец строки
- o - добавление новой строки под текущей
- O - добавление новой строки над текущей
- ea - вставка (добавление) после конца слова
- Esc - выход из режима вставки
Редактирование
- r - заменить один символ
- J - присоединить нижнюю строку к текущей
- cc - заменить всю строку
- cw - заменить всё текущее слово
- c$ - заменить до конца строки
- s - удалить символ и заменить текст
- S - удалить строку и заменить текст (то же что cc)
- xp - переставить две буквы (удалить и вставить)
- u - отменить
- Ctrl + r - применить последнее отменённое изменение
- . - повторить последнюю команду
Выделение текста (визуальный режим)
- v - включить режим выделения текста, выделить строки, затем выполнить команду (например, y-копирование)
- V - включить построчный режим выделения
- o - переместиться на другой конец выделенной области
- Ctrl + v - включить режим выделения блоков
- O - переместить на другой угол блока
- aw - выделить слово
- ab - блок в ()
- aB - блок в {}
- ib - внутренний блок в ()
- iB - внутренний блок в {}
- Esc - выйти из режима выделения текста
Визуальные команды
- > - сместить текст вправо
- < - сместить текст влево
- y - скопировать выделенный текст
- d - удалить выделенный текст
- ~ - переключить регистр
Регистры
- :reg - показать содержимое регистров
- "xy - поместить содержимое в регистр x
- "xp - вставить содержимое регистра x
Совет: Содержимое регистров сохраняется в ~/.viminfo, и будет восстановлено при следующем запуске vim.
Совет: В нулевом регистре всегда хранится содержимое последней команды копирования.
Метки
- :marks - список меток
- ma - установить метку A на текущей позиции
- `a - переместиться к метке A
- y`a - скопировать до метки A
Макросы
- qa - записать макрос A
- q - остановить запись макроса
- @a - run macro a
- @@ - выполнить последний макрос
Вырезать и вставить
- yy - скопировать строку
- 2yy - скопировать 2 строки
- yw - скопировать слово
- y$ - скопировать до конца строки
- p - вставить буфер обмена после курсора
- P - вставить буфер обмена перед курсором
- dd - удалить (вырезать) строку
- 2dd - удалить (вырезать) 2 строки
- dw - удалить (вырезать) слово
- D - удалить (вырезать) до конца строки
- d$ - удалить (вырезать) до конца строки
- x - удалить (вырезать) символ
Выход и сохранение
- :w - сохранить файл, но не выходить
- :w !sudo tee % - сохранить файл с sudo
- :wq либо :x либо ZZ - сохранить файл и выйти
- :q - выйти (терпит неудачу в случае несохраненных изменений)
- :q! либо ZQ - выйти и потерять несохраненные изменения
Поиск и замена
- /pattern - поиск шаблона
- ?pattern - обратный поиск шаблона
- \vpattern - 'very magic' режим: все не алфавитно-цифровые символы интерпретируются как специальные (экранирование не требуется)
- n - повторить поиск в том же направлении
- N - повторить поиск в обратном направлении
- :%s/old/new/g - заменить все вхождения шаблона в файл на указанное значение
- :%s/old/new/gc - заменить все вхождения шаблона в файл на указанное значение с подтверждением
- :noh - отключить подсвечивание результатов поиска
Поиск в нескольких файлах
- :vimgrep /pattern/ {file} - поиск по шаблону в нескольких файлах
Например:
:vimgrep /foo/ **/*
- :cn - переместиться к следующему совпадению
- :cp - переместиться к предыдущему совпадению
- :copen - открыть окно со списком результатов
Сворачивание
- zf#j - создает свертку от текущей позиции до # строк
вниз
- zf/подстрока - создает свертку от текущей позиции и
до первой найденной подстроки
- v/V и zf - выделение блока и создание свертки
Команды для управления:
- zc - свернуть блок
- zo - развернуть блок
- zM - закрыть все блоки
- zR - открыть все блоки
- za - инвертирование (если открыто – закрыть, если
закрыто – открыть)
- zj - переход к следующей свертке
- zk - переход к предыдущей свертке
- zd - удалить свертку под курсором
- zD - удалить все свертки
- [z - перейти к началу текущей свертки
- ]z - перейти к концу текущей свертки
После закрытия Vim все свертки забываются, для
сохранения сверток в открытом файле используется команда
:mkview
, для загрузки - :loadview
(подробнее).