Работа с регистрами Vim

Регистры в Vim — это ячейки памяти, куда можно сохранять текст или команды для последующего использования, аналогично буферу обмена.

Основные типы регистров:

  • Регистр по умолчанию ("): автоматически используется для копирования и вставки текста, если не указан другой регистр.
  • Нумерованные регистры (0-9): хранят историю удалений текста, начиная с самого последнего.
  • Именованные регистры (a-z): регистры, которые пользователь может выбрать для сохранения текста.
  • Регистры поиска (/, ?): сохраняют последние строки поиска.
  • Регистры команд (:): хранят последние введенные команды.
  • Черновой регистр (_): “чёрная дыра”, в него можно удалять текст, который не нужно сохранять.
  • Системный буфер обмена (+ и *): позволяют взаимодействовать с системным буфером обмена для копирования и вставки между Vim и другими приложениями.

Примеры использования именованных регистров в Vim

  1. Копирование в именованный регистр

    Чтобы скопировать текст в регистр, нужно перед командой указать его имя:

    • Копируем строку в регистр a:
      "ayy
      
      Это скопирует текущую строку в регистр a.
  2. Вставка из именованного регистра

    Чтобы вставить текст из регистра a, нужно использовать команду вставки с указанием регистра:

    • Вставляем содержимое регистра a:
      "ap
      
      Это вставит текст из регистра a после курсора.
  3. Удаление с сохранением в регистр

    Можно удалить текст и сохранить его в регистр:

    • Удаляем строку и сохраняем в регистр b:
      "bdd
      
      Это удалит текущую строку и сохранит её в регистр b.
  4. Замена содержимого регистра

    Если нужно заменить содержимое регистра, просто повторно используем тот же регистр:

    • Копируем другую строку в регистр a, заменяя его содержимое:
      "ayy
      
      Теперь в регистре a сохранится новая строка.

Примеры использования нумерованных регистров в Vim

  1. Удаление и восстановление текста

    Vim автоматически сохраняет удаленный текст в нумерованный регистр ":

    • Удаляем строку с помощью dd, затем вставляем её снова:
      dd
      "0p
      
      Это удалит текущую строку и вставит её после курсора.
  2. Использование последнего удаления

    Чтобы использовать текст из последнего удаления (до 9 операций назад), используйте "<номер регистра>p:

    • Вставляем текст из предпоследнего удаления:
      "2p
      
      Это вставит текст, который был удалён две операции назад.
  3. Управление историей удалений

    Vim хранит до 9 последних удалений в нумерованных регистрах 1-9:

    • Вставляем текст из пятого последнего удаления:
      "5p
      
      Это вставит текст из пятого удаления назад.
  4. Использование содержимого нумерованных регистров в макросах

    Нумерованные регистры полезны при создании макросов для повторения операций:

    • Создаем макрос, который удаляет строку и вставляет её снова:
      qq
      dd
      "qp
      
      Здесь макрос q начинает запись, dd удаляет строку, а "qp вставляет её снова.