How to Undo and Redo in Vim / Vi

Updated on

3 min read

Vim Undo and Redo

Have you ever found yourself in a situation where you accidentally deleted a line or changed your mind about an edit, and you’ll want to revert the changes?

In this article, we will show you how to undo and redo changes in Vim / Vi.

Vi is a lightweight editor that has been around since the early days of Unix, while Vim is an enhanced version of Vi that includes many additional features and options.

Vi or Vim is pre-installed by default on macOS and almost all Linux distributions. Knowing the basics of Vim can be especially 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 u, :u or :undo commands:

  1. If you are in insert or any other mode, press the Esc key to go back to the normal mode, which is also known as command mode.
  2. Type u to undo the last change. In Vim, the u command also accepts quantifiers. For example, if you want to undo the four last changes, you would use 4u.

Make sure you’re typing lowercase u, not the uppercase U command, which undoes all the latest changes on one line. If you accidentally type U you can undo the change with u.

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 is the oposite of undo; it allows you to reverse the previous action.

To redo a change in Vim and Vi use the Ctrl-R or :redo command:

  1. Press the Esc key to go back to the normal mode.
  2. Use Ctrl-R (press and hold Ctrl and press r) to redo the last change. In Vim, you can also use quantifiers. For example, if you want to redo the four last changes, you would type 4Ctrl-R.

Each undo command can be reversed by a redo command.

Conclusion

When working with text files, it’s common to make mistakes while editing, such as accidentally deleting a line or making an unintended change. 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 .

Furthermore, you can also use the :earlier and :later commands to move back and forth in time through the changes you made. For example, typing :earlier 10m will revert the changes made in the last ten minutes, while typing :later 5s will redo the change made five seconds ago.

Feel free to leave a comment if you have any questions.