Проводишь за клавиатурой по 8 часов в день? Эта статья для тебя.

В этой статье расскажу про минимум команд, которыми сам пользуюсь ежедневно.

Что такое vim

Vim - это такая программа, редактор текстовых файлов. В почти всех дистрибутивах linux установлен vi (“vim” - “VI iMproved”). У него есть несколько режимов: “ввод текста”, “изменение”, “навигация” и “выбор текста”.

Спойлер - как выйти из vi(m)?

`:wq` - сохранить и выйти
`:q`  - выйти

Хоткеи

Хоткеи (англ. hotkeys - “горячие клавиши”) - клавиши и их сочетания. В vi каждая отдельная клавиша может сочетаться с другой, образуя комбо действий. Например, 7dt, - 7 раз удалить (d) до (t) запятой (,). Нажимаются не одновременно, а последовательно друг за другом.

Режим навигации

Из любого режима перейти в режим навигации - esc.

При открытии vi нас встречает толстый курсор, как если бы был активирован insert - режим команд и навигация по тексту. При этом, если вы используете 10-пальцевый метод, пальцы автоматически лежат на основных клавишах навигации:

`h`,`j`,`k`,`l` - влево, вправо, вверх, вниз

hjkl

В сочетании с ctrl:

ctrl+u - вверх на размер экрана
ctrl+d - вниз на размер экрана

Навигация по словам:

`w` - в начало следующего слова
`b` - в начало предыдущего слова

wb

Навигация с поиском:

`f`+`любой_символ` - find, перемещает курсор на первый найденный в текущей строке символ

f0

Поле ввода команд

shift+`:` - открывает поле ввода команд

В этом поле можно, например, выполнить полнотекстовый поиск и замену по всему документу:

%s:regex_to_find:replacement_text - ищем regex_to_find и заменяем на replacement_text, разделитель `:` может быть любым символом на ваш вкус

vim_rename

Переход на произвольную строку по номеру:

123 - номер строки, жмете enter и курсор перемещается на номер 123

320_317

Удобно, когда нужно быстро перейти в начало shift+:,1,enter - перемещает курсор на начало

Режим ввода

Перейти в режим ввода текста можно по клавише:

`i` - insert, перейти в режим ввода
`a` - after, поставить курсор после текущего символа и перейти в режим ввода

Команды с шифтом:

`A` - поставить курсор в конец строки и перейти в режим ввода

vim_A

Изменение текста

`d` - delete, используется в сочетании с другими командами для удаления:
`dd` - удалить все строку под курсором

vim_dd

`dw` - удалить до конца слова под курсором

vim_dw

`db` - удалить до начала слова под курсором

vim_db

`dt`,`символ_до_которого_удалить` - удаляет все до указанного символа в пределах строки
`df`,`символ_до_которого_удалить` - все до символа, включая сам символ

vim_df

`x` - вырезает текущий символ и помещает в память

vim_x

`p` - paste, вставляет то, что было в памяти в текущее место курсора или вместо выбранного текста

с шифтом:

`D` - удалить до конца текущей строки

vim_D комбо:

`di`,`символ скобок {,[,(` - удалить внутри (inside) скобок, курсор должен находиться внутри выражения в скобках

vim_di

Выбор текста

`v` - перейти в режим выбора

vim_v

После перехода в режим выбора курсор можно перемещать расширяя область выбора. С шифтом:

`V` - перейти в режим выбора построчно

vim_V

C ctrl:

`ctrl`+v - перейти в режим выбора с произвольным перемещением курсора. Курсор можно двигать вертикально и выборанный блок будет прямоугольником, где один угол - начало выбора, а противоположный - тот, куда поместится курсор

vim_ctrl_v

Над выбранной областью можно выполнять действия командами изменения текста.

Выбирать можно комбинациями:

`vi`, `символ скобок { или [ или (` - v делает выбор, i - указывает, что выбор нужно сделать внутри (inside) скобок

vim_vi