Visual Mode
Визуальный режим позволяет нам выделять в своих рамках текст.

Всего сущесвует несколько типов разных визуальных режимов:
v- простой визуальный режим. Текст выделяется при перемещении курсора.V- реэим выделения строк.

ctrl + shift + v- визуальный блок-режим. Выделяется прямоугольный блок текста. Зачастую нужен для столбцеобразных данных.

В визуальном режиме работают так же все команды и удобно комбинировать d / dw, y / yy, c / cw
Весь текст, поверх которого мы вставляем наш текст, будет попадать в регистр

Самый сэмпловый пример использования: скопировал слово yw, вставил поверх vwp
Изменение регистра
u - в обычном режиме отменяет изменения. В режиме выделения он меняет регистр букв.
U- меняет на верхний регистр.u- меняет на нижний регистр.
veU - поменяет регистр на верхний


~ - также меняет регистр, но без дополнительного выделения. Просто переходим на нужный символ без выделения и используем.

V-Line Mode
V - включает режим выделения строк. Этот режим позволяет выделать нам сразу целые группы строк и так же позволяет рабоатать с d, y, p.
Обычно, для перемещения строк мы используем удаление и вставку dd + P. Этот режим имеет особенную синергию с командой :m, которая позволяет перемещать выделенные строки туда, куда мы укажем.
:m10 - переместит на десятую строку
:m+10 - переместит на 10 строк вниз (так же можно указать и -)


Сама по себе команда :m работает и без режима выделения, но она здорово помогает с переносом большого количества строк.
V-Block Mode
ctrl + v / ctrl + V переводит нас в режим визуального блочного выделения. Этот режим повзоляет выбирать многострочным образом, но не захватывая строки целиком, а в радиусе блока

Удобен он тем, что его можно использовать как:
- Мультикурсор - редактирование одинаковым образом сразу нескольких строк
- Выделение блока - выделение по параллелепипеду
Чтобы пе6рейти к редактированию на том блоке, который мы выделили, мы должны:
- выделить блок
- нажать на
I - начать вводить первую строку
- выйти из режима, чтобы принять изменения из одной строки сразу во все выделенные

Удаление уже работает проще и оно просто на d удаляет выделенный участок.
Вставка через p/P сразу будет многострочной.
Макросы
Макрос - это инструмент Vim, который позволяет в одно движение выполнять однотипные действия.
Очень удобны макросы для того, чтобы в одно движение модифицировать большое колчиество текста aka кода.
Например, у нас есть много обычных функций, которые мы хотим перевести в стрелочные:
const myFn = () => {
}
function myFn() {
}
function newFn() {
}
function anotherFn() {
}Начать записывать макрос можно на q. Далее нам нужно указать ячейку, в которую будем записывать макрос - тоже можно q. И теперь все наши действия записываются до тех пор, пока мы ещё раз не нажмём q, чтобы зафиксировать эти изменения.
cw const esc f( i = esc f{ i => - этим небольшим набором действий мы превратили из обычной функции в стрелочную
const newFn = () => {
}И теперь мы можем применить этот макрос сочетанием @q, где второе значение - ячейка макроса
