I’m moving to a non-qwerty keyboard layout, as I follow a quest to drastically reduce wrist pain from typing.
I’m also a vi-keys (and Vim) user. My navigation probably works out like this:
ctrl-f
, ctrl-b
)/
and n
/ p
)w
/ W
/ b
/ B
hjkl
As I’m moving hjkl to other positions, I’m planning on using a keyboard ‘layer’ to allow me to use the keys at the qwerty hjkl
positions after pressing a ‘mode’ key.
Has anyone else moved away from hjkl
and:
I’ve been using Dvorak for years and for vim & similiar (emacs evil, tridactyl, etc) I just use normal hjkl.
j
andk
are next to each other on Dvorak, which is easy enough and I tend to usew
,b
,f
/t
, incremental search, or semantic jumping methods more thanh
/l
movements anyway.I do also have a layer on my keyboard with arrow keys, which I have on what would be
ijkl
on QWERTY (i.e. right-side WASD).As a Dvorak user I’ve found that, while it wasn’t designed with computers in mind, it’s actually still very convenient for computer/programming use (egs. dash/underscore is on the home row, +/= is also easier to access, brackets make sense since they’re put next to parentheses (next to 9/0), and so on). j/k is no exception, as they’re conveniently right next to each other on the left hand (c/v in QWERTY). h/l are also opposite each other on the right hand in the same orientation as they are in QWERTY (h/l in Dvorak = j/p in QWERTY). I find having j/k on the left hand is actually really convenient, because I can scroll (eg. a webpage with Vimium) while keeping my right hand on my mouse.
I do the exact same thing, i.e. nothing. Having the
hl
andjk
pairs on opposite hands feels good;j
andk
being next to each other in the right order helps, andh
is on the left ofl
so there’s no feeling of it being backward in any sense.I also have cursor keys on the QWERTY
ijkl
/Dvorakchtn
on separate layer when I need them! Seems like we’re using a very similar layout. :)Add one more to the list. Type hjkl in their normal positions in the dvorak layout.
But I also have a keyboard nav layer with arrow keys arranged in a T shape that almost nothing else uses but I think is ideal:
I like this because it keeps my pinkie free for a hyper modifier and I find curling a finger downward easier than stretching up.
I’m using Colemak, but also on an Atreus, which is programmed to have arrow keys under the left hand (esdf). I still have some muscle memory left of just using the awkward placements before I got the Atreus, but at this point I don’t see a good reason to not just use the better positioned and more widely supported arrow keys.
IMO, give up on the bizarrely macho idea that hjkl is uniquely amazing and use the arrow keys.
To me the advantage of using
hjkl
instead of the arrow keys is that I don’t have to move my fingers away from the home row to move the cursor around. I don’t see how that is a “bizarrely macho idea”.I cannot imagine how that helps. Can you explain?
You can keep your fingers in the middle of the typing area (home row) instead of going over to the cursors.
Oh, hi ane!
I cannot imagine how that helps. Can you explain?
Hi!
You… move around less? It saves time. Like a keyboard shortcut or macro does, basically. It depends on the form factor of the keyboard, but usually the arrow keys are further away from the regular text input keys.
Perhaps 10 years of active piano practice makes this a moot point for me but not so much for others. Or I’m just being an asshole. Could be both ;)
What I find helpful about it, is that I don’t have to look away from the screen to see where the arrow keys are, and likewise when going back to the home row. If there’s a lot going on on your screen it’s easy to lose your place, especially when reading lots of text.
Also it avoids the physical motion of moving your hand, it just feels more comfortable I think.
I use a 60% keyboard without arrow keys
By choice, though?
Yes, it’s more portable and means i don’t have to reach as far for my mouse
I used to think this way. Then I learned hjkl. Now I am in the cult of the ancient keyboard warriors
Ancient keyboard warriors who didn’t have arrow keys? I used arrow keys, learned hjkl, thought it was nice, moved to dvorak, ditched hjkl for arrow keys. Nothing is magic about it. Why contort yourself to use hjkl on non-qwerty? Would hjkl be dhtn if the standard were dvorak at the time? Probably, but you can’t just remap dhtn now.
There was once a really good reddit thread of a guy playing counter-strike with zqsd movement keys on a qwerty keyboard cause he copied a French (AZERTY) player’s keybinds. He did not realize this and posted about how much better these movement keys made him.
Pedantic note: ScreaM is a Belgian, not French, player. The keyboard layout is still French though
If you’re using Dvorak in the “suggested sense”, even
dhtn
would be awkward since you’d be using your right index finger for bothd
andh
. Maybehtns
(or QWERTYjkl;
) would be better.How did you come to the conclusion hjkl is “bizarrely macho”?
Why is that macho?
I mean some people tried it, liked it and share the good experience of how great it feels when you get used to it.
I used to use hjkl. Then I started getting RSI. Now I appreciate the break my fingers naturally get every time I have to move my hands to the arrow keys.
I can still use hjkl at a pinch, and probably use them many times a day without noticing. But yeah, it’s not worth getting worked up about.
I can see this being the case, but I think it’s worth noting that RSI covers a large number of distinct problems, and that most RSI would only get worse by more frequently moving your hands away from the home position.
Thanks for all the suggestions and it’s great to hear all the different ideas people have tried and sometimes kept because they work for them.
I’m going to start by taking olly’s advice (thanks!) and using keys on the home row or thereabouts - with a key being held down to activate them. I was wondering if having both my keyboard and editor be modal would be confusing and it sounds like it is.
I didn’t mention anything other than being on a non-qwerty layout. For posterity, I’m on a Redox board with a layout ‘inspired’ by Workman. I’ve re-arranged the letter keys somewhat and I’ve left most of the keys around the edge unmapped, with my plan being to minimise finger stretching and use layers for numbers and less-common symbols.
I made myself a little on-screen keyboard app so I can see my layout and which keys I’m pressing (they highlight as I type) and can avoid peering down all the time - and I’m busy with typing tutors trying to get my WPM back up. No wrist pain at all so far but I’m at less than half usual speed!
The keyboard and the layout aren’t as important as posture and hygiene (drink water and exercise).
Get some pro opinions on the matter o/
You’re welcome, happy to help.
If you’re going to use a key on your left hand to activate the movement layer, another tip I have it is to also have left handed arrows at
sdfg
. That way, you can still use arrow keys with one hand in case you’re eating a sandwich or something.I started with an ergodox, I think it’s similar to the Redox. After a while I did exactly the same and disabled most of the keys. Then a few months later I switched to the corne keyboard and it’s great.
I agree with jeromenerf’s points, but still it’s a really cool feeling to get a setup working really nicely for you. I guess split keyboards help as well.
I’m already fine on the suggestions from jeromenerf but yes they are indeed requirements too if you haven’t got them right.
My wrist pain has also lessened since I stopped resting my wrists/hands and now keep them raised, like I’m playing the piano, and since I moved to a split, tented layout (initially with two Apple keyboards).
After I started disabling keys, thinking “I don’t really want to stretch for those” I then started wondering why I’d bought a keyboard with so many keys. But it doesn’t matter as they’re not in the way of anything… though I could tuck my Apple trackpad closer in at the centre if there were fewer… I’ll probably end up on a Corne in a year or two!
I’m on Workman. I mapped
Caps Lock
+Y N E O
to left, down, up and right. Here’s my xmodmap.I use vim and Norman and don’t do anything about them. They’re in odd, arbitrary places, but they were odd and arbitrary anyways. It hasn’t been any hassle. I still use qwerty on staggered keyboards regularly so Ididn’t want to relearn all the keys I’d have to remap to keep movement on the home row.
I switched to Colemak and committed to using hjkl where they are in Colemak, and it’s actually been more intuitive for me than the qwerty hjkl positions.
For those curious, Colemak hjkl positions:
Why not just use the arrow keys? We use
hjkl
because the ADM-3A terminal didn’t have arrow keys. Thehjkl
is nice but not a gamechanger.EDIT: Okay falling down a rabbit hole on the history of keyboard keys, there might be a lot more to this story than the ADM
Because the arrow keys are in an awkward position, requiring a huge hand movement away from all the other keys.
I use Colemak and I remapped the keys like this. For me comfort is the most important thing and I don’t like the idea of not having at least up & down on the home row.
It does sometimes take some effort, but I don’t change editors that often so I personally think it’s worth it. I’ve been using vscode now for several years and it’s perfect. I guess there are some editors that can’t be remapped, but it hasn’t happened to me yet.
My keyboard doesn’t have arrow keys, so I also have a layer on my keyboard that puts the arrow keys in the classic vim position, which I find also works really nicely, though I don’t use that in vim-enabled editors. I activate it by holding a left thumb key down.
When I first switched to having my arrow keys on a separate layer on my keyboard, I had it activated modally (rather than by holding down a key) and for me that didn’t work well. I thought I’d get used to it eventually but having modes in my keyboard and also modes in vim meant I could never keep track of which mode either was in. After trying to get used to it for a couple months I gave up and switched to activating my movement layer by holding a key instead of just pressing a key, and that felt so much better.
After writing this I’m now wondering why remap vim and my keyboard, I guess it was because I didn’t get a keyboard like this until a few years later and I was already used to the way I remapped vim. I think if I got the keyboard first I’d forget about remapping vim. So I’d say go for it with your keyboard layer (but consider making it a hold layer instead of a modal layer, or at least try both before deciding).
I use the neo2-keyboard layout, which has a layer that maps the arrow-keys to the (qwerty) wasd-keys. I think this is better than using hjkl, because i don’t have to move my hands of the home-row and it works in every program that allows arrow-key-navigation (including vi).
Same here. Cannot recommend neo2 enough (at least for German speakers).
I rebind:
My keyboard has arrow keys split across the halves that I hit with my thumbs. Up and down on the right side and left and right on the left side.
(colemak-dh mod) I do some swaps to retain up/down home row. In my vimrc it looks likes this:
I need a better visual… 3 out of 4 of these orthogonal keys are handled with my right index finger. BUT that’s ok, because really I care a lot more about the NE (up/down) motions than LH (left/right), I find with the usual vim motions (tTfF, wWbB, s, /) work well for moving sideways, and I use the vertical motions for menu stuff all the time (shell history, dmenu, browser interfaces)
As a colemak user I remapped everything on vim, vimiumFF, ranger and zathura to my convenience. It doesn’t really take that much, I also skipped things that I didn’t really need to use
I am using the norman layout. I have a few remaps:
This actually leaves hjkl 1 key shifted to the right - which makes sense, since proper home row placement leaves your index finger on the (qwerty) j, not h.
Personally, I have been using BÉPO for 4 or 5 years now, and I have decided to use this opportunity to remap hjkl in
vim
to jkl: (as they are printed in qwerty layout, wich translates to tsrn in bépo). This right shift allows me not to move my end to move the cursor. I am pretty happy about this.I’ve seen a few people mention that they made this change, and while it does initially seem like hjkl is misaligned by one key, I believe there is a reason for that. Down and up are pressed far more often, especially down, so they’re positioned under the two strongest fingers. Left and right, are less common because you can move by word, or using f,F,t,T.
Not trying to criticise your change, I just thought that might be interesting for people to know.
I started using Colemak before actually starting to use Vim, and when I switched to (neo)vim and started learning that, I rebound the keys in an…interesting way:
nest
. On QWERTY, that’d bejkdf
—so it is still on the home row but split across both hands.st
are up/down, and are easily usable left-handed to browse. When I used vimium, I liked that because it meant I could left-hand scroll while still using the mouse with my right hand. Now it’s just habit.ne
are right/left (in that order—i.e. they’re inverted: the leftward key moves right). I don’t know why I inverted them. Maybe becauseM-n
for “next window” in xmonad was an easy mnemonic. Maybe just because it felt right at the time. I don’t really use these keys when editing text, but my xmonad keybindings are the same for 2d window navigation and they do get used there.I switched to acme and only use the mouse and shortcuts to jump to end-of-line and start-of-line. I tried Vim after switching to Dvorak (and later Workman) and was never able to use hjkl. Vim is for n00bs without real computers.
Dvorak user here. vim, emacs, and the standard Ctrl/Command C, X, V, Z – all non-issues for me. You just get used to it.
What’s actually more of an issue is video games that default to right-handed-ness. I can hardly blame developers for that, but it’s a chore having to remap, new game after new game, WASD to arrow keys, and whatever else is focused around there (QWE, ZXC, Tab, Left Shift, etc.).
Not an answer to your question, but:
Take a look at
f
/F
/t
/T
. More efficient one-letter searches on the same line.I use a layered keyboard on the computer where I do most of my coding (an Ergodox EZ) and I type using Colemak. I have a layer on my keyboard that replaces NEIO (JKL; on the QWERTY keyboard) with HJKL. Its additionally nice in that I don’t have to shift my hand over one key to get into the right “position” for movement.
I use a modified Dvorak layout on a datahand keyboard. It’s not too hard to use hjkl in their current place. It is a little frustrating at first but that’s how you know that you’re learning. Just keep at it.
I use Dvorak and this is why I love the layout-agnostic keybindings of Emacs. I could never get used to evil-mode or anything. I have ersatz Emacsen (like mg) wherever I can’t have GNU Emacs just so that I can continue to use the familiar keybindings.
By the way, there’s a plugin for Dvorak keybindings in vim.
I use Dvorak. When I use vim, it’s standard key layout jkhl. Mostly I use Sublime Text / Visual Studio &c so I guess I’m not an hjkl’er. I do use Ctrl/option-arrow to jump by word & delete by word, that suffices. I find that generally I am not limited by my typing speed, but knowing what to type. I mean, a 500-word essay should take minutes, if only. A 1500-loc library should take maybe an hour to type out, again if only. On OS X, I love using readline shortcuts (again, not an hjkl’er).
readline supports vi keys. I think its defaults are EMACS style but don’t quote me.
Full time dvorak user. I got used the positions of hjkl. I try to minimize one-character movements, though.
W and B, ctrl-D and ctrl-U with crtl on capslock, have become my friends using dvorak.
Having hjkl neatly near each other is only important if you’re moving around by holding them down and relying on key repeats. Then you can quickly back up when you overshoot the target. If I’m feeling lazy and want to move around like that, I use the cursors. If I want to do something like d5j I use j and would never even consider the down cursor. I think of the command and typing it is like typing the actual text.
So leave them where they are is my advice.
Dvorak user here. I remap
htns
, qwerty’sjkl;
, tohjkl
in all applications to get spatial navigation. This also frees upd
, qwerty’sh
, to be used for delete in vim/kakoune/qutebrowser. However new locations fortns
are needed and I’ve been usingkgl
for that. This leavesj
free and I use that as a leader (as well as,
andz
).[Comment removed by author]
I use a customised version of Colemak-DH. I just use the regular Vim keys. The K being above the J took some getting used to, but nowadays I don’t really think about it. I thought about rebinding them, but then I probably have to rebind a bunch of other keys as well.
Dvorak dvp here. It doesn’t matter to me where hjkl are, I just use them where they are (jcvp on a qwerty layout). I also use yubn for diagonal moves in nethack and others.
colemak vimmer here for almost 10 years now?
I also just use colemak style hjkl. no remapping.
I use Colemak positions… except with swapped up-down:
map global normal j k; map global normal k j
Because obviously the up key should be physically higher and the down key should be lower!
Mine is 99% moving by
{
paragraph}
. Okay I’m obviously massively exaggerating but I do it all the time and I don’t understand how others don’t use it :DA bit off-topic, but is there some plugin that would give me statistics of what am i typing in command mode in (neo)vim?
Assuming by “command mode” you mean Normal mode, I don’t know of such a plugin off the top of my head. But I’ll mention that Vim’s
:history
command shows the:
command-line commands you’ve executed. If you run:history all
, you can see a few additional types of history: search string, expression register, input line, and debug command history.I use https://neo-layout.org/. Perfect for German and English und coding.
I use dvorak but I never remap the keys in vim and kakoune, I never felt the need to. The only place I found troublesome are those keyboard shortcuts such as ctrl-x, ctrl-c and ctrl-v.