58

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

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

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

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

2 ответа2

97

The

:help registers

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

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

Если вы удалите каждую строку по очереди, регистры "1 , "2 , "3 и "4 будут содержать "Vim", "And", "World" и "Hello" соответственно.

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

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

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

"3p

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

7

В дополнение к ответу 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .