viper: Macros and Registers

 
 2.4 Macros and Registers
 ========================
 
 Viper facilitates the use of Emacs-style keyboard macros.  ‘@#’ will
 start a macro definition.  As you type, the commands will be executed,
 and remembered (This is called “learn mode” in some editors.)
 ‘@register’ will complete the macro, putting it into ‘register’, where
 ‘register’ is any character from ‘a’ through ‘z’.  Then you can execute
 this macro using ‘@register’.  It is, of course, possible to yank some
 text into a register and execute it using ‘@register’.  Typing ‘@@’,
 ‘@RET’, or ‘@C-j’ will execute the last macro that was executed using
 ‘@register’.
 
    Viper will automatically lowercase the register, so that pressing the
 ‘SHIFT’ key for ‘@’ will not create problems.  This is for ‘@’ macros
 and ‘"p’ _only_.  In the case of ‘y’, ‘"Ayy’ will append to _register
 a_.  For ‘[,],',`’, it is an error to use a Uppercase register name.
 
    The contents of a register can be seen by ‘]register’.
 (‘[textmarker’ will show the contents of a textmarker).
 
    The last keyboard macro can also be executed using ‘*’, and it can be
 yanked into a register using ‘@!register’.  This is useful for Emacs
 style keyboard macros defined using ‘C-x(’ and ‘C-x)’.  Emacs keyboard
 macros have more capabilities.  SeeKeyboard Macros (emacs)Keyboard
 Macros, for details.
 
    Keyboard Macros allow an interesting form of Query-Replace:
 ‘/pattern’ or ‘n’ to go to the next pattern (the query), followed by a
 Keyboard Macro execution ‘@@’ (the replace).
 
    Viper also provides Vi-style macros.  SeeVi Macros, for details.