Comment by JdeBP
5 days ago
Yes, hjkl navigation is certainly one of the things that should learn about a vi clone. But are novices well served, in the 2020s, by that being the primary thing that they learn before anything else?
This is not a criticism of this WWW site specifically. The VIM doco has the same priorities, teaching hjkl navigation before arrow keys. (So do nvi2 and NeoVIM.) The problem is that the received wisdom, that arrow keys are some newfangled idea that might not have reached your terminal manufacturer yet, is massively out of date.
Even if one does not teach the arrow keys first, the BS SPC SO (Control+N) DLE (Control+P) set is surely worth teaching early on. One cannot make any reasonable argument that terminals might not have spacebars. (-:
The reasons I still use vi-style editing in editors are:
1. Efficiency, so I can be fast
2. Minimal stretching and whole-hand movement, so I don't get painful wrists and so I can be accurate.
Using a keyboard's arrow keys doesn't fit with 2.
Touch typing essentially. It's such a comfortable way to work. Remapping mode switching to something like jk instead of Esc is vital to stay comfortably in the home row.
I always liked this site to grok some of those vim fundamentals [1] and the touch typing part was going to touch typing exercise webpages and getting pure practice.
- [1] http://learnvimscriptthehardway.stevelosh.com/
I always wonder about the choice of hjkl, because don't people normally rest their hands one row to the left, on jkl;?
It has to do with the codes these keys (used to) emit in combination with Ctrl:
Source - the ADM-3A operator's manual, page 3-5:
https://archive.org/download/lear-siegler-adm-3-a/Lear_Siegl...
That does not really present any argument that we should be teaching your way of working to VIM novices, instead of teaching them the obvious arrow keys first and the hjkl navigation later.
Doesn’t the act of reaching for the mouse actually creates a natural moment of wrist relaxation? A fixed wrist position creates static muscle tension.
I think the reason to use and teach those keys first, is that they can be used in all the motions aswell. The arrow keys can´t and thus do not really make much sense in a vi context.
The arrow keys can be used as motions for operators in VIM. Try them. This is also true for nvi.
Ah, that's interesting, i had no idea. Thanks. :D
Sorry to be blunt, but if you don’t want to spend effort on touch typing (and therefore avoid arrow keys), learning vim motions is rather pointless and you might as well not bother.
I'll be blunt to you back: that's not true. Vim motions are useful because you don't have to switch between the keyboard and the mouse, even if you (like me) never bothered with touch typing.
but what if i learned to type Colemak?
Many years ago, I have switched to touch-typing using the Dvorak layout (on standard QWERTY keyboards), which I find much more comfortable.
Obviously any classic control key assignments, like those of vi or those of emacs, are far from optimal on a non-standard keyboard layout.
The only decent solution is to remap all control keys in your text editor, to whichever positions you prefer.
Any good text editor allows that. Likewise, all programs with a good user interface allow the remapping of the keyboard shortcuts.
I just have a layer on my keyboard that puts arrow keys where hjkl are on qwerty when I hold the tab key. Since tab is right next to my pinky finger on my laptop, it easily became muscle memory, and allows to use home row navigation in all apps, not just the ones that support hjkl.
At that point does your keyboard even still have arrow keys?
hjkl are more of a cult/status thing anyway because they are not _that_ touch-typing-friendly to begin with, and they suck just as much as the cursor keys for moving the cursor around.
Insisting so much on hjkl is silly. No one is using an ADM-3A in 2026, so the official documentation should let users use the more intuitive cursor keys and downgrade hjkl to what they have always been since vi: __ham-fisted alternatives to the cursor keys__.
How are they "not that touch-typing-friendly" when they're literally the keys that are always under your fingers when touch typing?
jkl; are (on QWERTY keyboards). hjkl are not.
2 replies →
Bro be using two mice with a screen keyboard.