Developer Tools

Undo in Vi and Its Successors

Vim ignores a 40-year-old POSIX rule to give users unlimited undo, while other vi clones remain compliant.

Deep Dive

Chris Siebenmann analyzes how different vi text editor successors handle undo. Original vi and POSIX-compliant clones like nvi offer only single-level undo/redo. Vim and its derivatives break this standard to implement predictable, multi-level undo/redo using 'u' and Ctrl-R, which can accept counts (e.g., '10u'). BusyBox vi and Emacs' evil mode have their own implementations. The post argues Vim's approach is the most user-friendly for modern development workflows.

Why It Matters

For developers, a robust, multi-level undo system is critical for efficient coding and error recovery, making editor choice impactful.