vimtricks.wiki Concise Vim tricks, one at a time.

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

  • viminfo option 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 :wshada and :rshada instead of viminfo commands
  • :registers shows all register contents — verify macros are persisted
  • Share macros by copying the viminfo/shada file between machines

Next

How do I return to normal mode from absolutely any mode in Vim?