Работа с регистрами Vim
Регистры в Vim — это ячейки памяти, куда можно сохранять текст или команды для последующего использования, аналогично буферу обмена.
Основные типы регистров:
- Регистр по умолчанию (
"
): автоматически используется для копирования и вставки текста, если не указан другой регистр. - Нумерованные регистры (
0-9
): хранят историю удалений текста, начиная с самого последнего. - Именованные регистры (
a-z
): регистры, которые пользователь может выбрать для сохранения текста. - Регистры поиска (
/
,?
): сохраняют последние строки поиска. - Регистры команд (
:
): хранят последние введенные команды. - Черновой регистр (
_
): “чёрная дыра”, в него можно удалять текст, который не нужно сохранять. - Системный буфер обмена (
+
и*
): позволяют взаимодействовать с системным буфером обмена для копирования и вставки между Vim и другими приложениями.
Примеры использования именованных регистров в Vim
-
Копирование в именованный регистр
Чтобы скопировать текст в регистр, нужно перед командой указать его имя:
- Копируем строку в регистр
a
:
Это скопирует текущую строку в регистр"ayy
a
.
- Копируем строку в регистр
-
Вставка из именованного регистра
Чтобы вставить текст из регистра
a
, нужно использовать команду вставки с указанием регистра:- Вставляем содержимое регистра
a
:
Это вставит текст из регистра"ap
a
после курсора.
- Вставляем содержимое регистра
-
Удаление с сохранением в регистр
Можно удалить текст и сохранить его в регистр:
- Удаляем строку и сохраняем в регистр
b
:
Это удалит текущую строку и сохранит её в регистр"bdd
b
.
- Удаляем строку и сохраняем в регистр
-
Замена содержимого регистра
Если нужно заменить содержимое регистра, просто повторно используем тот же регистр:
- Копируем другую строку в регистр
a
, заменяя его содержимое:
Теперь в регистре"ayy
a
сохранится новая строка.
- Копируем другую строку в регистр
Примеры использования нумерованных регистров в Vim
-
Удаление и восстановление текста
Vim автоматически сохраняет удаленный текст в нумерованный регистр
"
:- Удаляем строку с помощью
dd
, затем вставляем её снова:
Это удалит текущую строку и вставит её после курсора.dd "0p
- Удаляем строку с помощью
-
Использование последнего удаления
Чтобы использовать текст из последнего удаления (до 9 операций назад), используйте
"<номер регистра>p
:- Вставляем текст из предпоследнего удаления:
Это вставит текст, который был удалён две операции назад."2p
- Вставляем текст из предпоследнего удаления:
-
Управление историей удалений
Vim хранит до 9 последних удалений в нумерованных регистрах
1-9
:- Вставляем текст из пятого последнего удаления:
Это вставит текст из пятого удаления назад."5p
- Вставляем текст из пятого последнего удаления:
-
Использование содержимого нумерованных регистров в макросах
Нумерованные регистры полезны при создании макросов для повторения операций:
- Создаем макрос, который удаляет строку и вставляет её снова:
Здесь макросqq dd "qp
q
начинает запись,dd
удаляет строку, а"qp
вставляет её снова.
- Создаем макрос, который удаляет строку и вставляет её снова: