I grew up using Emacs—I think the first time I fired it up was when I was about 7 and was learning how to use mutt to read and send email. I used Emacs exclusively—I did learn the basics of vi bindings but never seriously used it—until I was about 24. I got a nasty case of RSI from using a mouse too much for too long. I went all-in on my ergonomic setup: I got a split/tented keyboard, a standing desk, went to physical therapy, etc.
I also took a look at my keystrokes and decided to 1.) get a keyboard with a thumb cluster so I could put modifier keys on my thumbs, and 2.) switched to Evil mode for the Vim bindings.
Life is awesome now.
I believe Emacs+Evil is the best of both worlds. I initially poo-pooed modal editing (why do I have to distinguish between inserting and appending?! It's so stupid!) but I've relented—using Vim bindings is like having a little composable language to talk about text editing. It's amazing.
Evil is incredible too. I'm still tweaking my setup to this day. But that's the thing—I like being able to tweak my setup to get to the maximum ergonomic configuration for me. I think there's some room for some better defaults and/or starter kits in this space (e.g. switching to vterm-mode should automatically take you out of Evil and drop you into the normal Emacs bindings, etc.) but things like evil-collection makes it so that I don't have to switch in and out of Vim-movement thinking.
Some things that switching to Evil-mode feasable:
- I started using the GUI so that Emacs could distinguish between e.g. Ctrl-Shift-x and Ctrl-x—it's nice having richer modifier combinations at your disposal.
- Having Ctrl-z bound to `emacs-evil-state` is a life-saver in situtations where you want to switch back to Emacs bindings for whatever reason.
As I understand it, Evil is the best Vim emulation out there bar none. E.g. I can use `/` as a motion command: `c/foo ` will delete from the point to the next occurrence of `foo` and put me into insert mode. All this without loosing any of the customizability and the larger package ecosystem of Emacs.