Is there a way to display a macro list similar to displaying your mappings in Vim?

In vim, the macros are just stored in registers. You can recall the content of any register and execute it as a macro (which is what the @ does). To see a list of what is in your registers, use :reg.


You can see the contents of all the registers using the

:reg

command. Or an argument string like this

:reg ahx

will show you the contents of registers a, h, and x.

That way you can at least see what sequence of commands will be run and hopefully that will be clear enough for you to tell one from another.

The registers simply contain text. You can paste the command sequence in as text or you can copy text into a register and then run it as a command, depending on how you access the register.

I have not found any direct way to edit the contents of a register, but you can paste it into the file, edit it, and then save it back to the same register.

IHTH.


As /u/jheddings wrote the macros are stored as registers and what counts is the assignment of the code to the register (usually done in the vimrc files with let @a=blahblah To ease the way to display the macros you defined in your vimrc file (in my case it is in the ~/.vimrc path) you can use this vim function:

function! ShowMacros() 10new exe 'r!' . 'grep -B 1 -E "^\s*let @" ~/.vimrc' call cursor(1,1) endfunction

What it does:

10new - open a new vim window with ten lines size

exe ... - execute a command and put in the window

call ... - go to the first line first column

You can execute this function by tipping in the normal mode :call ShowMacros

You could additionally create a key mapping or a command to fasten the way to call the function:

:cnoremap sm call ShowMacros()<CR> command! sm call ShowMacros()

This is the original post where I wrote the function similar to the above.

Tags:

Vi

Vim

Macros