February 17, 2026
Press U to start a flame war
Undo in Vi and Its Successors
Undo Wars: Old‑school vi vs Vim’s time travel — comments go nuclear
TLDR: Old vi only let you undo once, while Vim/Neovim added deep, even tree‑style undo with a proper redo key; nvi sticks to the rulebook, BusyBox goes minimal, and Emacs’s “Evil” confuses. Comments split between time‑travel fans and standards purists, with jokes and a “ban Vim” hot take keeping it spicy.
One tiny key, huge drama. The article lays it out: the original 1970s vi only let you undo once, and the standard (POSIX) actually locked that behavior in. Modern Vim and NeoVim ignored that and went full time machine with multi‑level undo and redo, while nvi tried to keep the rulebook but added a quirky dot‑dance to stack undos. Emacs’s “Evil” vi mode? Even fans admit its undo/redo feels like a puzzle. BusyBox’s tiny vi keeps it simple: undo yes, redo no.
But the comments are where it explodes. One joker dropped a classic “:q!” and bounced, while Lio flexed that Vim/NeoVim keep history as a tree, not a straight line, so you can branch, experiment, and jump back to any version you liked proof. Sharlin gasped that single‑undo was even a thing, and gpvos blamed Emacs’s “inscrutable” undo for scaring them off entirely. Then came the gatekeeping: iberator slammed Vim as “nag‑ware/charity‑ware,” pined for ancient vi, and even said it should be banned. Cue gasp.
The vibe: modern convenience vs. old‑school purity. Vim loyalists cheer predictable undo/redo and “time travel.” Standards purists and retro die‑hards defend traditional vi. Everyone else is just trying not to fat‑finger “u” into chaos—and yes, the memes are strong.
Key Points
- •Classic vi, as defined by POSIX/SUS, uses single-level undo where 'u' toggles between undoing and redoing the last change.
- •Vim implements multi-level undo and redo, using 'u' for undo and Ctrl-r for redo, both supporting counts; it can be configured for vi-compatible behavior.
- •Nvi maintains POSIX-compliant default behavior but supports multi-level undo by extending 'u' with '.'; '.' does not accept counts, requiring stepwise actions.
- •Evil (Emacs vi emulation) inherits Emacs’ multi-level undo, binds 'u' and Ctrl-r for undo/redo, and provides customization options such as evil-undo-system.
- •BusyBox vi can be built to support multi-level undo via repeated 'u' and does not appear to support redo; Ubuntu and Fedora builds reportedly include this.