Vim вырезать и вставить историю

60

Когда я «врезаюсь» в vim, я верю, что есть регистры, которые хранят историю всех последних вещей, которые я вырезал. Как мне получить доступ к этим регистрам?

Например, скажем, я вырезал каждое из этих слов последовательно

  • 'Привет'
  • 'Мир'
  • 'А также'
  • «Вим»

Обратите внимание, что я на самом деле не сохраняю эти изменения в отдельных регистрах, я просто использую 'd' четыре раза подряд.

user4941
источник

Ответы:

102

The

: регистры справки

Команда показывает, что существует 10 пронумерованных регистров ( "0до "9).

Регистрация "0- это самая последняя вещь, которую выдернули ; регистр "1содержит самый последний удаленный текст, регистрирует "2предыдущее удаление, "3имеет удаление перед этим и так далее.

Если удалить каждую строку , в свою очередь, регистры "1, "2, "3и "4будет содержать «ВИМ», «И», «Мир» и «Hello», соответственно.

Вы можете проверить это с помощью команды :reg(или :registers):

:reg
""   Vim^J
"1   Vim^J
"2   And^J
"3   World^J
"4   Hello^J

Таким образом, удалив четыре строки по одной, вы можете восстановить 2-ю строку («Мир») с помощью

"3p

потому что это третье последнее удаление.

NJD
источник
Это потрясающе; Тем не менее, что я хочу, чтобы самый последний «дернул» текст?
Алексей
Поэтому вы должны использовать: p (что означает то же, что и «0p»)
njd
1
Также обратите внимание на специальные регистры, особенно «*» и «+», когда вы читаете :help registers. Очень полезно
Даниэль Андерссон
3
Боги, вы узнаете что-то новое каждый день как vimmer. Это здорово. Спасибо, @njd.
ELLIOTTCABLE
3
Этот ответ исключает важную деталь: таким образом в истории сохраняются только удаления одной или нескольких строк. Если вы удалите слова так, как описано в вопросе OP (используя dчетыре раза вместо dd), тогда все, кроме последнего, будут потеряны.
Александр Рехштайнер
8

В дополнение к ответу njd это можно упростить с помощью плагина YankRing . Помимо облегчения просмотра предыдущих янков, вы можете настроить некоторые ключи, чтобы вы могли выталкивать предыдущие янки из «стека». Это позволяет вам делать:

yy    " Copy first line
yy    " Copy second line
yy    " Copy third line
yy    " Copy fourth line
" Assumes you've mapped ,p to be the pop command: choose your preferred key or key-combination
,p    " Paste fourth line and pop it off the Yank Ring
,p    " Paste third line and pop it off the Yank Ring
,p    " Paste second line and pop it off the Yank Ring
,p    " Paste first line and pop it off the Yank Ring
Al.
источник
4
Не могли бы вы добавить, как отобразить ,pна карте предыдущий янки?
Эндрю Вуд