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

Регистры в Vim — мои “ячейки”, куда попадает текст после y (копирования), d (удаления), c (замены), и откуда я потом вставляю через p/P.

Минимум

  • " — безымянный регистр. Если ничего не указываю, вставка идёт отсюда.
  • 0 — последнее копирование (yank). Обновляется командами y.
  • 1..9 — история удалений (самое свежее в 1).
  • a..z — именованные регистры (я сам выбираю, куда складывать).
  • Посмотреть всё быстро: :reg

История удалений ("1..9)

Удалил строку → вернул из истории

dd
"1p

Что помнить:

  • После dd текст оказывается и в " и в "1.
  • Следующее удаление сдвигает историю: старое "1 становится "2, и т.д.

Пример:

dd
dd
"2p

Копирую в именованный регистр и вставляю оттуда

Скопировать строку в a:

"ayy

Вставить из a:

"ap

Удалить строку именно в b (чтобы не потерять то, что мне нужно):

"bdd
"bp

Если после копирования я что-то удалил: "0 vs "1

Если я скопировал (y), а потом удалил (d), обычное p вставит удалённое.
Чтобы вставить именно последнее копирование:

"0p

Макросы + регистры (когда повторяю одно и то же)

База:

  • Запись макроса в q: qq ... q
  • Запуск: @q
  • N раз: 10@q

Пример: беру слово, кладу в a, вставляю в конец строки.

qq
"ayiw
A <Esc>"ap
q