How to Undo and Redo in Vim / Vi
2 min read
Sometimes, when editing a file, you may delete a wrong line or change your mind about an edit, and you’ll want to revert the changes.
This article explains how to undo and redo changes in Vim / Vi.
Either Vi or Vim is installed by default on macOS and almost all Linux distributions. Knowing the basics of Vim might be very useful when you encounter a situation where your favorite editor is not available.
Undo Changes in Vim / Vi
Vim keeps track of all the changes you made in the current session. The undo command undoes one or more changes in the order in which they were made.
To undo changes in Vim and Vi use the
- If you are in insert or any other mode, press the
Esckey to go back to the normal mode, which is also known as command mode.
uto undo the last change. In Vim, the
ucommand also accepts quantifiers. For example, if you want to undo the 4 last changes, you would use
Make sure you’re typing lowercase
u, not the uppercase
U command, which undo all latest changes on one line. If you accidentally type
U you can undo the change with
Use the undo command to revert the changes made by any other command, such as delete, paste, search and replace, and so on.
When working in insert mode, all changes to the text are considered as one entry in the undo tree. For example, if you switch to insert mode and enter five lines, then go back to normal mode and press
u to undo the change, all five lines are removed.
Redo Changes in Vim / Vi
The redo feature reverses the action of undo.
To redo a change in Vim and Vi use the
- Press the
Esckey to go back to the normal mode.
Ctrl-R(press and hold
r) to redo the last change. In Vim, you can also use quantifiers. For example, if you want to redo the 4 last changes, you would type
Each undo command can be reversed by a redo command.
To undo a change in Vim/Vi type
u, and to redo a change which was undone use the
Ctrl-R key sequence.
Vim also supports undo branches.
Feel free to leave a comment if you have any questions.