Основные команды текстового редактора VIM

Текстовый редактор vim, созданный на основе более старого vi. Один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, возможными благодаря расширениям и надстройкам. По умолчанию входит в состав любого дистрибутива Linux и BSD.

Открываем файл с помощью vim:

$ vim test.txt

Это основной режим, только из него можно сразу перейти в другие режимы. Это режим включает в себя - перемещение по файлу, стирание текста и другие редактирующие функции. Для возврата в основной режим из любого другого режима:

<ESC>
<Ctrl-[>

Предназначен для ввода текста. Как только завершается ввод текста, принято сразу возвращаться в обычный режим. Заметьте, что стирание и ввод текста происходит в двух разных режимах. Переход в него из обычного режима:

i
<Insert>

Предназначен для ввода команд, таких как - операции с файлом, поиск и замена, настройка редактора и т.д. Переход в него из обычного режима:

:

Предназначен для ввод поискового запроса. Переход в него из обычного режима

/ поиск от курсора до конца документа
? поиск от курсора до начала документа

Режим для выделения текста.

v + стрелка влево или вправо выделение части строки
Shift+v выделение строки
Ctrl+v выделение прямоугольником части текста

После загрузки Vim, на экране выведется часть файла. Загрузившись, Vim находится в «командном режиме» - один из основных режимов. Это значит, что если вы нажмете клавишу l , вместо появления буквы l произойдет сдвиг курсора на один символ вправо. В командном режиме все, что вводится с клавиатуры, интерпретируется Vim как команды, а не как вводимый текст. Рассмотрим команды для перемещения по тексту

Для перемещения курсора используются следующие клавиши и комбинации:

k перемещение вверх
h перемещение влево
l перемещение вправо
j перемещение вниз
Ctrl-f на страницу (экран) вниз
Ctrl-b на страницу (экран) верх
Ctrl-d на пол страницы (экрана) вниз
Ctrl-u на пол страницы (экрана) верх
Ctrl-y на строку вниз, без изменения положения курсора
Ctrl-e на строку верх, без изменения положения курсора
0 в начало текущей строки
в начало текущей строки (к первому непробельному символу)
$ в конец текущей строки
w на слово вправо
b на слово влево
W до пробела вправо
B до пробела влево
} абзац вниз
{ абзац вверх
gg перейти в начало файла
G перейти в конец файла
<number>G перейти на конкретную строку <number>
/<text><CR> перейти к <text>
?<text><CR> то же самое, но искать назад
n повторить поиск
N повторить поиск назад
[[ в начало функции
'' к месту выполнения команды [[

Следующие команды переводят редактор в режим ввода:

i перейти в режим ввода с текущей позиции
a перейти в режим ввода после курсора
I переместиться в начало строки и перейти в режим ввода
А переместиться в конец строки и перейти в режим ввода
o перейти в режим ввода с новой строки под курсором
O перейти в режим ввода с новой строки над курсором
s заменяет указанное количество символов (удаляет указанное число символов и переходит в режим ввода). В отличии от команды с которая может удалить кусок текста размером не меньше слова (cw), командой s можно удалить любое число символов. Например, 4s удалит четыре символа начиная с того который находится под курсором. Эта команда применяется для замены одного или нескольких символов другими символами
S удаляет всю текущую строку и переходит в режим ввода. Число перед командой показывает сколько нужно удалить строк начиная с текущей. Например 4S удалит четыре строки включая текущую.
R перейти в режим ввода с заменой текста (аналог insert). Символы под курсором заменяются на вводимые. Команда применяется когда неизвестно сколько придётся изменить символов на другие (иначе можно было бы использовать команду s с указанием числа заменяемых символов, например, 7s). При удалении вводимых символов возвращаются те, которые были до ввода команды. Такой режим сохраняется до конца строки. При вводе новой строки (по нажатию Enter), происходит не переход на другую строку с тем же режимом замены текста, а создание новой строки
r

Ниже перечислены основные комманды удаления и вставки текста:

x удалить символ под курсором (<число>x удаляет указанное число символов начиная с того который находится под курсором);
X удалить символ влево (удалить символ перед курсором);
d используется совместно с командами перемещения. Удаляет символы с текущего положения курсора до положения после ввода команды перемещения.
dw
de удалить символы до конца слова, но оставить пробел
dE удаляет символы с текущего до конца слова, включая символы пунктуации, но оставляет пробел после слова
diw удаляет слово под курсором
dd удалить текущую строку (вырезать)
d<число>d или <число>dd стирание числа строк начиная с текущей
db удаляет символы с текущего до начала слова (удаление в обратном направлении)
d0 удаление символов с начала строки до текущего положения курсора;
d$ или D удаление символов с текущего положения курсора до конца строки;
с команда аналогичная d, но после удаление переходит в режим ввода;
сс команда удаляет текущую строку и переходит в режим ввода;
C удаляет текст с текущего положения курсора до конца строки, аналогична команде с$ (где $ - символ конца строки)
yy (также Y) копирование текущей строки в буфер
y<число>y копирование числа строк начиная с текущей в буфер
p
P вставка содержимого буфера перед курсором
J слияние текущей строки со следующей. Числовой аргумент перед командой показывает сколько следующих линий необходимо объединить с текущей. Например 2J объединить две следующие строки с текущей, на которой расположен курсор
u отмена последней команды
U отмена всех последних изменений в строке, если строка удалена, то применить эту команду к данной строке будет невозможно

Перейти на строку:

/фраза поиск фразы во всем документе
n следующее найденное (вниз)
N предыдущее (вверх)

Есть еще пара команд, которые вам необходимо знать:

:q! выйти без сохранения
:wq записать файл и выйти
ZZ записать файл и выйти (Если файл не изменяли, то записываться он не будет)

Данные команды совместимы с редактором vi. Дополнительную информацию можно посмотреть в Linux, куда входит учебник по работе с редактором, - просто введите в командной строке команду vimtutor.