vi is a problem looking for a solution...which, coincidentally, is emacs.
Emacs is an operating system pretending to be an editor.