Tip 39 Printable Monobook Previous Next

created 2001 · complexity basic · version 6.0

To undo recent changes, from normal mode use the undo command:

  • u: undo last change (can be repeated to undo preceding commands)
  • Ctrl-r: Redo changes which were undone (undo the undos). Compare to . to repeat a previous change, at the current cursor position. Ctrl-r (hold down Ctrl and press r) will redo a previously undone change, wherever the change occurred.

A related command is:

  • U: return the last line which was modified to its original state (reverse all changes in last modified line)

U is not actually a true "undo" command as it does not actually navigate undo history like u and Ctrl-r. This means that (somewhat confusingly) U is itself undo-able with u; it creates a new change to reverse previous changes.

U is seldom useful in practice, but is often accidentally pressed instead of u, so it is good to know about.

Undo TreeEdit

Note that unlike most programs which maintain a linear undo history, Vim maintains an undo tree containing every edit made to a buffer. To learn how to use Vim's undo tree, see the separate article on using undo branches.

Undo Stack Edit

Note that a single Insert session (invoked by pressing i) is considered as one entry in the undo stack. That is, if you entered 10 lines in a single Insert session, then pressed Esc, invoking undo will delete those 10 lines (as opposed to undoing only the the previous line, which is usually the case in most code editors).

See alsoEdit



:nnoremap U :echo " < < ===== C H E C K   C A P S   L O C K ===== > > "<CR>
Community content is available under CC-BY-SA unless otherwise noted.