Why Emacs Keys Are Painful
xahlee.info
xahlee.info
The author of this article also has information on how early keyboards and circumstances influenced the (now outdated) design of vim. http://xahlee.info/kbd/history_of_vi_keys.html
The cursor keys being on the home row is just because it happened to be that way on the terminal where vi was invented. We have long since standardized on separate cursor keys, which are more intuitive.
Who standardized on separate cursor keys? Yes, we have arrow keys, but they're ergonomically worse than anything that lets you stay on the home row. I'll even take the Emacs keys over arrow keys.
Does that mean the mouse and keyboard are outdated?
But people who like Vim don't like it for its intuitiveness. Cursor keys aren't ergonomically located, switching from touch typing to moving the cursor with cursor keys involves a massive hand movement compared to how frequently it's necessary. Using HJKL for movement fits extremely well together with touch typing, and the vim mode switching is more comfortable than moving the hand to the cursor keys.
Don't confuse "intuitive" with "ergonomic" or "efficient" or good". They're very often not the same thing.
Also, many kind of typos can be fixed without entering insert mode! If there's an extra character, I delete it with dl. If a character should've been something else, I use 'r' followed by the letter it should have been.
I agree that command mode is more annoying than necessary since it relies on cursor keys to move the cursor.
Intuitive and convenient are two orthogonal things, I bet that the creators of that terminal put the cursor keys simply because it's convenient to have them on a home row, unlike the creators of the IBM PC keyboard who valued intuitiveness more. I don't see how the ergonomics of typing is outdated.
Besides, after all these years HJKL is a common convention already, and can be even more intuitive for many people (not just programmers, but also e.g. roguelike players who usually have the diagonal movement keys around HJKL as well).
But that's a bit of a red herring since vi's command language makes the entire single-character cursor movement "outdated" in a sense. The abbreviated commands are highly composable and let you navigate and edit any structured text with the speed of thought. That is the actual value of vi.
The Control key is in the same wrong general location; it wants to be where Symbolics has Rubout, and where PC keyboards have Caps Lock.
Another bad design was the DEC VT100 terminal keyboard. It put Ctrl to the left of a Caps Lock key: [Ctrl][Caps Lock][A][S][D][F]. Yikes!
Apple II had this right:
[Ctrl][A][S][D][F]
Commodore 64: Ctrl weirdly high: [Ctrl][Q][W][E]
[Rs][Sl][A][S][D]
Ctrl next to Q. Rs = "RunStop", Sl = "Shift Lock".In any case, I need the LeftControl to be somewhere far to the left, just like LeftShift.
Here is why: I only use those! I never use RightShift or RightCtrl.
When I type Ctrl-Q, Ctrl-W, ... Ctrl-Y, Ctrl-A ... Ctrl-G, Ctrl-Z ... Ctrl-B, I'm always using the left pinky, plus another finger of the same hand.
Same with the capitals of those letters: LeftShift with left pinky, plus left hand finger.
Whenever I have to use Alt, which is rare, I use LeftAlt, and it's quite awkward with the left side keys due to its position.
Here is why I use only LeftShift: from time to time ALL CAPS material occurs, like when typing identifiers such as PTHREAD_MUTEX_INITIALIZER. The only way to type these fast without using the Caps Lock key is to hold down shift with one finger and just type with the remaining nine fingers. Changing between left and right Shift in order to always use the opposite Shift key would be slow and prone to typing mistakes. Once you can type arbitrary material blindingly fast with your pinky holding down the LeftShift key, it makes no sense to think about the existence of RightShift.
That's why Bucky bits are mirrored on both sides.
Afterwards, I used a Karabiner Elements script to completely block myself from pressing a left-hand modifier and left-hand letter key simultaneously, forcing myself to learn proper two-hand typing of modifiers. My arm feels better now, and I’ve actually finally appreciating having a Caps Lock key precisely due to the struggle you describe - I’m convinced that two-hand chording is healthier than pressing multiple keys simultaneously with one hand, but at the same time typing e.g. TODO out is then unbearable without a real caps lock key.
The main issue is that due to my work I have to regularly work on a laptop, and anything that deviates too much from a standard keyboard will cause too much friction as I switch back and forth. It would have been easier to go all in on custom hardware if I worked at one desk all day.
The keyboards with a thumb cluster are a step in the right direction. Sadly, the positioning is suboptimal at best, because the design philosophy treats the thumb as just another stronger finger.
[1] https://vintagecomputer.ca/wp-content/uploads/2016/04/Canon-...
Ctrl + ]/[ (I forget which...I've never used this one)
jj
Caps Lock.
My preference is to globally configure my Caps Lock key in whatever OS I am to "ESC on tap; Ctrl on Hold". This works amazing for VIM and is fantastic for non VIM usage as well.
Note: I don't use the mac regularly enough since I discovered this so I'm not sure if it's possible on the Mac (historically Karabiner has achieved whatever I've needed, so I suspect it would be able to do this as well) or if I should set it to CMD instead of Ctrl (On Mac, CMD, or the Apple Key, or whatever Apple is calling it these days, is far more analogous to Ctrl on other platforms).
Ctrl+] is similarly bad
jj doesn't work for multilingual layouts (chance that this sequence is used in typing in that language)
(yes, Karabiner can achieve what you've described)
All of those are options. You don’t need to use all of them. Ctrl+] may be bad but people use it (I don’t like it which is why I’ve never used it, but there may be layouts in which it works well).
But im honestly struggling to see how pinky on the left cap is a bad option. And even if its a bad option, its a lot better than either CTRL keys, rhe ESC key, or the cursor keys which would be necessary to use without modal editing.
Like if the keymap were designed: "first key left of space" is our primary prefix since it's the most convenient (thumb) modifier, then the physical mod swap would've had no effect, and given the dynamic nature of the underlying language you could even have it be changed in a single variable to have an effect on all the keybinds and all the docs
(also yet another illustration how arbitrary bad defaults can stick forever, like vim using HJKL instead of fully going home keys JKL; just because some ancient keyboard had left arrow on H)
On the other hand (no pun intended), I have countless hours invested into WASD since the Quake days[1] in the 90s. There I press W most often and most definitely with my middle finger. So the middle finger can definitely be trained to a very high level!
[1]: I started my shooter "career" with Wolfenstein 3D but since there was no mouse involved, I was using the arrow keys. On the IBM layout one would press up and down with the middle finger (which I suppose is sort of your point).
Inverted T for arrow keys could also be used as an alternative by the "very strong muscle memory from games" crowd, that's a valid argument, but it's not some arbitrary arrows painted somewhere decades ago (the OP's keymap also uses inverted T in IJKL)