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