As noted by @Trendfischer in his comment, the current behavior of vim is not (anymore?) to empty the register on the first press of q
.
Now, if you picked the wrong register, here is what you can do:
- do not quit the recording mode (for now),
- create an empty line,
- paste the register you are overwriting (if you're recording in the
q
register, it's "qp
),
- now quit the recording mode (
q
)
- select the line you pasted above (without end of line mark:
0v$h
; don't use V
)
- yank it in the register you have overwritten (
"qy
if you're using the q
register; again: don't use the line wise copy Y
).
- now you have your old macro back in the register and you can restart the recording of your new macro in the correct register.
Of course, with a bit of effort, you can rescue both the old and the new macro (but you have to start the process before pressing the second time the q
): just paste what you have recorded and yank in the "new"/"right" register.
1Perhaps this behavior changed, I tested it with vim 7.4 and the register is available until I press
q
the second time. So:let @b=@a
is imho the best answer so far. – Trendfischer – 2016-07-07T13:34:52.860I like
qm
because I remember it with the mnemonic req*ord macro*. – Walf – 2018-07-03T00:46:46.4703
:let @b=@q
definitely works, so it's not true that the register is cleared when you start recording a macro. And I do use q register for one-off macros. And it's most likely that I can occasionally override it. – Alexey – 2013-10-28T20:24:28.623The register is cleared on the first keypress. Will you do the
:let @b=@q
dance every time you want to record a one off macro? That's what I was hinting at with my "wrapper" idea: write a short mapping that backs up@q
each time you hitqq
. It's very easy. But there's no built-in "record and backup" command. – romainl – 2013-10-28T21:27:06.133