Перейти к основному содержимому

Работа с редактором VIM

При работе с конфигурационными файлами гипервизора Горизонт-ВС, можно использовать редактор vim.

Vim имеет разные режимы работы, каждому из которых соответствует свой набор горячие клавиш. А ещё у vim своя собственная терминология, на базе которой организованы группы горячих клавиш.

Так, копирование в Vim — это yank (дергать, вытащить), поэтому горячие клавиши для копирования начинается с y. Удаление — delete (удалить), горячие клавиши для удаления и вырезания начинаются с d. Вставка — put (положить), горячие клавиши для вставки начинаются с p. Визуальный режим — visual (видимый, визуальный), горячие клавиши для работы в визуальном режиме начинаются с v.

Горячие клавиши «обычного режима»​

Обычный режим — это базовый режим, в который пользователь попадает сразу после запуска vim. Этот режим позволяет перемещаться по документу и вносить в него некоторые изменения. Базовые горячие клавиши для этого режима:

h,j,k,l — замена классических стрелок для навигации по документу
w — сдвиг курсора на слово вправо
b — сдвиг курсора на слово влево
Shift + w — сдвиг курсора до пробела вправо
Shift + b — сдвиг курсора до пробела влево
^ (Shift + 6) — переместить курсор к первому пробелу в начале строки
0 — переместить курсор к началу строки
$ (Shift + 4) — переместить курсор в конец строки
Ctrl + y — переместить курсор на строку вверх, с сохранением позиции
Ctrl + e — переместить курсор на строку вниз, с сохранением позиции
{ — переместить курсор на абзац вверх
} — переместить курсор на абзац вниз
Ctrl + d — переместить курсор на полстраницы (экрана) вниз
Ctrl + u — переместить курсор на полстраницы (экрана) вверх
Ctrl + f — переместить курсор на страницу (экран) вниз
Ctrl + b — переместить курсор на страницу (экран) вверх
gg — перейти в начало файла
G (Shift+ g) — перейти в конец файла
номер строки + G — переместить курсор на конкретную строку
/ искомый текст ↵ Enter — найти текст и переместиться к нему
? искомый текст ↵ Enter — то же самое, но искать с конца документа
n — повторить поиск текста (сразу переместит к искомому тексту)
N — повторить поиск назад (сразу переместит к искомому тексту)
g~~ — инвертировать регистр строки
ggguG — перевести весь текст в нижний регистр
gggUG — перевести весь текст в верхний регистр
Разберем отдельно хоткейсы и команды поиска и удаления. Начнем с команд поиска:
/jo[ha]n> — искать “john” или “joan”.
/\<for — найти слово, начинающиеся на for. Чтобы был найден for с любым количеством пробелом перед ним, укажите следующую конструкцию: /\*for.
/end\> — искать слово, оканчивающиеся на end
/\ — искать pagination (точное совпадение)
/\<...\> — искать слово из 3 символов (кол-во точек = кол-во знаков)
комбинации клавиш для удаления:
d^ (Shift + 6) — удалить все символы от курсора до начала строки
d$ — удалить все символы от курсора до конца строки
d/ слово — удалить всё от курсора до введенного слова
df символ — удалить всё от курсора до указанного символа
Для быстрого перехода в режим редактирования достаточно нажать i, а чтобы выйти — Esc.
Перейти в режим редактирования можно также с помощью следующих хоткейсов:
Shift + i — перейти в режим редактирования текста сначала строки
a — перейти в режим редактирования текста после курсора
Shift + a — перейти в режим редактирования текста с конца строки
o — перейти в режим редактирования текста с новой строки под курсором
O (Shift + o) — перейти в режим редактирования текста с новой строки над курсором
число s ↵ Enter — удалить заданное кол-во символов после курсора и перейти в режим редактирования
число S (Shift + s) ↵ Enter — удалить заданное кол-во строк вместе с текущей и перейти в режим редактирования
R — заменить символы после курсора и перейти в режим редактирования
r — заменить один символ и перейти в режим редактирования
cc — удалить строку и перейти в режим редактирования
C (Shift + c) — удалить символы от курсора до конца строки и перейти в режим редактирования
Для удаления символов, слов и строк существует целый набор горячих клавиш:
x — удалить символ под курсором
число x — удалить заданное кол-во символов
X (Shift + x) — удалить символ перед курсором
число X — удалить заданное кол-во символов перед курсором
de — удалить символы с текущего до конца слова, не включая пунктуацию и пробел в конце слова
dE — удалить символы с текущего до конца слова, включая пунктуацию и пробел в конце слова
dw — аналог de с удаление пробела в конце
di w — удалить слово под курсором
d d — вырезать текущую строку
число dd — вырезать заданное кол-во строк, начиная с текущей
db — удалить символы с текущей позиции курсора до начала слова
dO — удалить символы с текущей позиции курсора до начала строки
D (Shift + d) — удалить символы с текущей позиции курсора до конца строки
Для копирования и вставки существует свой отдельный блок комбинаций клавиш:
yiw — скопировать слова целиком
yw — скопировать символы от курсора до конца слова
y^ (Shift + 6) — скопировать все от курсора до конца строки
yy — копировать строку целиком, включая символ новой строки
число yy — скопировать заданное кол-во строк, включая текущую
y$ (Shift + 4) — скопировать всё от курсора до конца строки
y) (Shift + 0) — скопировать всё от курсора до конца абзаца
y( (Shift + 9) — скопировать всё от курсора до начала абзаца
p — вставить содержимое буфера после курсора
P — вставить содержимое буфера перед курсором
J — слить текущую строку с последующей
число J — слить заданное кол-во строк.
Для отмены последнего действия существует несколько горячих клавиш:
u — отмена последнего действия
U — отмена всех действий в строке. Если строка удалена — команда не сработает.

Обычный режим позволяет редактировать текст командами, однако иногда необходимо выделить часть строки или часть блока текста. Сделать это можно в специальном режиме — визуальном.

Горячие клавиши визуального режима​

Визуальный режим позволяет выбирать текст и управлять им. Установите курсор в место визуального выделения текста и нажмите v. Смещение курсора влево или вправо — выделяет текст посимвольно, смещение курсора вверх и вниз — выделяет текст построчно.

Можно войти в визуальный режим сразу с функции построчного выделения текста — Shift + v. Помимо посимвольного и построчного выделения текста, существует режим блочного выделения текста — Ctrl + v.

Режим визуального выделения текста очень хорошо сочетается с горячими клавишами обычного режима. Например, чтобы быстро выделить весь абзац достаточно установить курсор в начало абзаца нажать v и }.

Часто необходимо провести какие-то манипуляции с текстом целиком или с его отдельными блоками. Например, изменить регистр во всем документе. Вот некоторые хоткейсы визуального режима:

Vu — перевести строку в нижний регистр
VU — перевести строку в верхний регистр
vEU — перевести слово под курсором в верхний регистр
vE~ — инвертировать регистр слова

Итак, мы рассмотрели два режима: обычный режим и визуальный. Оба режима позволяют редактировать текст внутри документа. Теперь рассмотрим режим, который позволяет управлять состоянием документа.

Команды режима управления (командный режим)​

Чтобы перейти в командный режим, находясь в обычном режиме — нажмите: (Shift+;). В нижней строке состояния Vim должно появиться двоеточие. Это означает, что командный режим активирован и ожидает ввода команд.

Рисунок 487 – Вывод команды

Если двоеточие не появилось — нажмите несколько раз Esc, а затем повторите ввод двоеточия. Ввод команды подтверждается, нажатием кнопки ↵ Enter.

Возможности командного режима намного шире, чем просто сохранение файла и выход из Vim. Поэтому рассмотрим помимо команд работы с документом ещё команды замены текста.

Команды работы с документом​

Существует множество команд для работы с документом. Все команды начинаются с :. Приведем основные команды для работы с документами:

ZQ или q! — выйти без сохранения
qa! — выйти из всех файлов без сохранения
ZZ или wq или x — записать и выйти
w — записать файл
sav имя_файла — сохранить как
w! — сохранить в новый файл
sh — свернуть Vim и перейти в командную оболочку
Ctrl + d или exit
q — выйти из редактора
e! — отменить все изменения в текущей сессии
1,10w имя_файла — создать файл и скопировать в него содержимое текущего файла с 1 по 10 строки
1,10w>> имя_файла — добавить в файл с 1 по 10 строки из текущего файла
r название_файла — вставить содержимое из файла
23r название_файла — вставить содержимое файла после 23 строки

Команды для замены частей текста​

Основной конструкцией для составления поискового запроса в командном режиме является :%s. Далее идут аргументы запроса. Все команды запроса вводятся в командном режиме, т.е. начинаются с :. Приведём популярные команды поиска и замены:

%s/искомое_слово/слово_замена/g — найти и заменить все искомые слова на слова замены;
5,10s/искомое_слово/слово_замена/g — найти и заменить все искомые слова на слова замены между 5 и 10 строчками;
5,$s/искомое_слово/слово_замена/g — найти и заменить все искомые слова на слова замены, начиная с 5 строчки и до конца файла;
%s/искомое_слово/слово_замена/gi — заменить искомое слово на слово замену с учетом регистра;
%s/ *$//g — убрать все пробелы из файла;
%s/\r//g — убрать все возвраты каретки из файла;
%s#>[^<]\+>##g — убрать html-теги из документа;
%s/\<./\u&/g — перевести первую букву каждого слова в верхний регистр;
%s/\<./\l&/g — перевести первую букву каждого слова в нижний регистр;
%s/.*/\u& — перевести первую букву первого слова в каждой строке в верхний регистр;
%s/.*/\l& — перевести первую букву первого слова в каждой строке в нижний регист;