on December 15, 2016. in Development, Software. A 2 minute read.
Vim macros are a powerful thing — they let us record keystrokes and play them back later. These macros are recorded to named registers.
One thing I realised about them, is that they can be edited after they have been recorded. This is possible because macros “lives” in the register.
Say, for example, you record a macro of 20+ keystrokes, play it back, only to realize that there’s a single error in the steps. Re-recording the entire macro can be difficult. Instead,
paste the contents of that register somewhere, edit it, and then yank it back to that same register.
For a simple example, let’s assume we want to add *
around words. We record it to the register a
by typing qa
(the ^[
is the literal escape character):
bi&^[ea&^[
Play it back with @a
and — oh no! that’s not a *
, that’s a &
!
Vim macro editing to the rescue:
:new # to open a new split
"ap # take the register named "a" and paste from it
:%s/&/*/g # replace all & with *
^v$"ay # jump to start of line, visual mode, jump to end of line, take the named register "a" and yank to it
If we now play back the macro again with @a
, we see the *
s wrapping the word on which the cursor was, just what we wanted.
Happy hackin’!