How do I save and restore macros across Vim sessions?
Answer
:wviminfo / :rviminfo
Explanation
Vim can persist register contents (including macros) across sessions using viminfo (Vim) or shada (Neovim). By ensuring registers are saved in your viminfo file, your macros survive editor restarts.
How it works
viminfooption controls what's saved between sessions- Include
!in viminfo to save uppercase global variables - Registers (including macro recordings) are saved by default if viminfo is enabled
:wviminfo— manually write viminfo now:rviminfo— manually read viminfo to restore state
Example
" In your vimrc — save 50 lines per register, up to 10 files
set viminfo='10,"50
" For Neovim (uses ShaDa format)
set shada='100,<50,s10
" Manually save/restore
:wviminfo ~/.vim/session.viminfo
:rviminfo ~/.vim/session.viminfo
Workflow:
1. Record useful macro into register q
2. Close Vim
3. Open Vim again
4. @q still works! (restored from viminfo)
Tips
- For permanent macros, define them in vimrc:
let @a = 'dwwP' - Neovim uses
:wshadaand:rshadainstead of viminfo commands :registersshows all register contents — verify macros are persisted- Share macros by copying the viminfo/shada file between machines