60

When I'm 'cutting' in vim, I believe there are registers that keep a history of all the recent things I've cut. How do I access those registers?

For example, let's say I cut each one of these words consecutively

  • 'Hello'
  • 'World'
  • 'And'
  • 'Vim'

Note that I'm not actually saving these edits into particular registers, I'm just using 'd' four times consecutively.

100

The

:help registers

command reveals that there are 10 numbered registers ("0 to "9).

Register "0 is the most recent thing yanked; register "1 has the most recent deleted text, register "2 the previous deletion, "3 has the deletion before that, and so on.

If you delete each line in turn, registers "1, "2, "3 and "4 will contain "Vim", "And", "World" & "Hello", respectively.

You can verify this by using the :reg (or :registers) command:

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

So after deleting the four lines one at a time, you could recover the 2nd line ("World") with

"3p

because it's the third most recent deletion.

  • This is perfect; however, what I want the most recent 'yanked' text? – Alexey Oct 26 '10 at 17:01
  • So you would use: p (which means the same as "0p) – njd Oct 27 '10 at 18:30
  • 1
    Also pay attention to the special registers, especially "*" and "+", when you read :help registers. Very useful. – Daniel Andersson Feb 15 '12 at 9:09
  • 3
    Gods, you learn something new every day as a vimmer. It's great. Thanks, @njd. – ELLIOTTCABLE Nov 22 '12 at 16:42
  • 3
    This answer leaves out an important detail: Only deletions of one line or more are stored in the history this way. If you delete the words in the way that OP described in the question (using d four times, instead of dd) then all but the last deleted one are lost. – Alexander Rechsteiner Jul 13 '16 at 16:23
8

In addition to njd's answer, this can be simplified with the YankRing plugin. As well as making it easier to browse the previous yanks, you can configure some keys to allow you to pop previous yanks off the 'stack'. This allows you to do:

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
  • 4
    Could you add how to map ,p to pop the previous yank? – Andrew Wood May 2 '13 at 19:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.