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

Автор: zje , 26 августа 2021

Открыть файл с помощью vi / vim:
vi /var/log/mysql.log

Возврат после ввода команд
<ESC>, иногда 2 раза;

Ввод текста. 
i
<Insert>

Ввод команд
Команды (операции с файлом, поиск и замена, настройка редактора…). Переход для ввода команд:
:

Ввод поискового запроса.
/ , поиск от курсора до конца документа
? , поиск от курсора до начала документа

Выделение текста:
"v" и влево или вправо стрелками;
Shift+v вся строка целиком;
Ctrl+v прямоугольник, часть текста.

Перемещение по файлу

После загрузки Vim, на экране вы увидите часть загруженного вами текстового файла. Загрузившись, Vim находится в «командном режиме» - один из основных режимов. Это значит, что если вы нажмете клавишу <l> (строчная L), вместо появления «l» на месте курсора вы увидите, что курсор сдвинулся на один символ вправо. В командном режиме знаки, набираемые на клавиатуре, используются как команды для Vim, а не как помещаемые в текст символы. Команды перемещения - один из наиболее важных типов команд. Вот некоторые из них:
Для перемещения курсора нажмите клавиши h,j,k,l так, как показано ниже:
             ^
             k          Советы: Клавиша h находится слева и перемещает влево.
       < h       l >            Клавиша l находится справа и перемещает вправо.
             j                  Клавиша j похожа на стрелку "вниз".
             v

<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 можно удалить любое число символов. 
S - удаляет всю текущую строку и переходит в режим ввода. Число перед командой показывает сколько нужно удалить строк начиная с текущей. 
R — перейти в режим ввода с заменой текста (аналог insert). Символы под курсором заменяются на вводимые. Команда применяется когда неизвестно сколько придётся изменить символов на другие (иначе можно было бы использовать команду s с указанием числа заменяемых символов, например, 7s). При удалении вводимых символов возвращаются те которые были до ввода команды. Такой режим сохраняется до конца строки. При вводе новой строки (по нажатию Enter), происходит не переход на другую строку с тем же режимом замены текста, а создание новой строки.
r — заменить один символ. Заменяет символ находящийся под курсором на символ который следует за командой. При этом не происходит выхода из командного режима (не надо нажимать ESC после изменения текста). 

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

Отмена изменений
u — отмена последней команды;
U — отмена всех последних изменений в строке, если строка удалена, то применить эту команду к данной строке будет невозможно.

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

Выход
:q! - выйти без сохранения;
:wq - записать файл и выйти;

Теги

Комментарии