Vim is great, but most people miss an important reason _why_ modal editing is so great: having a separate mode turns your keyboard from "a keyboard" into "100 buttons."
In almost all text editors, the letters are just for text entry. If you want to do a command, you use a chord or a command input. Vim instead asks "what if the `n` key only meant the "n" letter in _specific circumstances_, and the rest of the time was Just A Button?"
Once you have 100 buttons, you can now put in 100 different actions.* Some of them might only be for niche cases, but with 100 actions you can cover a LOT of niche cases.

* more with shift, chords, sequences, w.e.
If you had 100 buttons for analyzing CSVs, what actions would you put in? "Show only this column", "toggle headers", "swap rows", "swap columns", "create computed column", "add computed column as actual column", "query on cell/whole row/whole column" all come to mind
What about 100 buttons for writing SQL? "Add GROUP/HAVING to current query", "Toggle WHERE clause", "goto next join", "Undo last change", "undo to last ran query", "undo to last SUCCESSFULLY ran query", just off the top of my head.
What about 100 buttons for code review? Sending emails? Debugging? Making graphviz/tikz diagrams? Running in a REPL? Using a todo list? We haven't even scratched the surface of what modal interfaces can give us.
(Why not use chords? First of all, chords are a lot heavier than buttons. I can hit ten buttons in the time it takes me to hit three chords. Second, you can add chords on top of modal editing, so you have 100 buttons AND chords.

Autocomplete is even worse: it uses brainpower.)
Honestly Vim is a little disappointing in this regard as it doesn't support adding new first-class modes. You're stuck with the seven-ish Vim comes with. I'm not surprised: the first pioneers of a new technique are often the worse at showcasing it, as nobody's done UI/UX yet
You can follow @hillelogram.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: