Workman Layout for Vim
axiomatic.neophilus.net
axiomatic.neophilus.net
I chose to learn Colemak-DH [0]. Before learning I was around a 75-80 WPM Qwerty touch typist. I went all in and did a lot of heavy practice. It took me around a week to be able to touch type colemak-dh (slowly) and then a further few months to touch type at speed.
I didn't want to lose my ability to use Qwerty so after getting up to a moderate speed of ~45 WPM I exclusively brought my colemak flashed happy hacking keyboard to work, and left qwerty at home. I have now equalized at about 60 WPM on both layouts after 8 months, and can pretty easily swap between them.
Now I don't really know what to do, nor have I noticed really any perceived benefit of switching layouts. The biggest difficulty has been vim keybinds. I really don't want to have to remap all of my vim keybinds (as like the OP article states, I think of my vim commands based on their name and qwerty representation) so I have been relying on multiple keyboard layers to handle movement keys and the like. Having to use modifiers, remember the different locations between layouts, and stealing away previous CTRL+<key> modifiers from vim to accommodate this kind of sucks.
I notice no difference in wrist (dis)comfort, it's just become more mental overhead to typing, and I am kind of stuck. I guess I am waiting to have some time to think about what I want to do, but balancing two layouts doesn't seem practical, or reasonable, or efficient.
I'm also a vim keybinding user, but in Emacs evil-mode mostly. Vim keybindings are definitely made for qwerty, and to me not rebinding the keys just seemed insane.
I ended up spending a weekend, reviewed all the keybindings I use, and ones I should probably use more, then wrote it all out [0].
I remapped a lot of keys back to their qwerty positions, but I also took the opportunity to make some changes that I thought would be more ergonomic. I also came up with me own mnemonic system for the re-mappings.
For example:
| function | before | after | new mnemonic | Commentary |
|-------------------+--------+-------+-------------------+--------------------------------------------|
| find file at pt | g f | g s | search file at pt | need to free up `g f' |
| find file.. w/ ln | g F | g S | search file.. etc | need to free up `g F' |
| end WORD | E | F | far WORD | foot/forward are other possible mnemonics |
| end WORD | g E | g F | far WORD rev | foot/forward are other possible mnemonics |
| end word | e | f | far word | |
| end word | g e | g f | far word rev | |
| find | f | s | search | right next to till :) |
| rev find | F | S | rev search | |
| visual mode | v | r | range | see note below |
| visual lines | V | R | range lines | |
| visual block | C-v | C-r | range block | |
| visual restore | g v | g r | range restore | |
| replace | r | v | revise | convert is another possible mnemonic |
| replace mode | R | V | revise mode | |
| goto mk | ` | j | jump | easier to reach and now mnemonic |
| goto mk ln | ' | J | jump to line | same key as j now, which makes sense to me |
Here is a minimal vim config [1] that I use if I find myself wanting to use (neo)vim. My evil-mode config [2] in Emacs. Remapping `less` keys [3].[0] https://github.com/willbush/system/tree/main/configs/keyboar...
[1] https://github.com/willbush/system/blob/main/configs/nvim/in...
[2] https://github.com/willbush/system/blob/82253534b92f3ab87d8e...
[3] https://github.com/willbush/system/blob/82253534b92f3ab87d8e...
'jk' are adjacent. 'h' is to the left of 'l'.
And I can use Vim without trouble on qwerty and on my own custom layout. The only adjustment to the layout I made when designing it was placing hjkl in reasonable positions (e.g. avoid the worst placements, but they're still not on the homerow).
The only shortcuts that might be worse on an alternative layout is hjkl, and you can argue that people way overuse them and it's better get into the habit of using other movement keys instead.
I've found that Vim ergonomics are way better on my own layout[0] than on qwerty, despite hjkl not being on the home-row.
And overuse argument isn't enough to even move them (it's an argument to maybe move word-based movements to the home row instead of them, but not to just move them out), let alone split them!
Your layout isn't relevant when talking about Colemak, it's trivial to make Vim way better even on qwerty since the defaults are very bad, so of course there are layouts where these letters magically appear in more ergonomic position, the argument is that it makes no sense to make it worse just to stick to the labels
Going to the main page of that site reveals some articles from the past few years, but also has online casino and crypto links disguised as posts. E.g.:
> is your premier source for crypto insights, covering the latest news, trends, and guides on blockchain, cryptocurrencies, and cybersecurity. Whether a beginner or a pro, you can find valuable information and tips to stay ahead in the Web 3.0 era.
Weird and shady.
I keep seeing all these people fancy keyboards and interesting looking layouts except that it takes them six to 10 attempts to type anything correctly. Don't really get the point, but having got curious about this "workman" layout and regretted trying to find out.
I was thinking of a pane layout manager ... Anything like that around?
[1]: https://axiomatic.neophilus.net/workman-layout-for-vim/
Shortcuts sometimes use mnemonics, eg p to print or whatever, but they're often just in particular locations, like V for paste for example - it's just next to 'C' for cut - so if those two keys are separated on your new layout, it's confusing, and in any case, does it matter that it's 'C' for cut - just using whatever keys are in those two locations is so ingrained in muscle memory that they should be remapped.
The other issue is that most of these alternate layouts are optimized for writing prose, and sometimes make other things, code, for example, more difficult.
I have fond memories of those Sun keyboards with dedicated cut, copy and paste keys...
Any alternative is going to have benefits and costs.
With learning alternative keyboard layout, "learn shortcut" mostly means you learn by the letter, not by the position on the keyboard.
It's least awkward for programs which you can drive with two hands on the keyboard (like vim), and most awkward for programs which want keyboard+mouse and have a bias for left-hand side of the qwerty layout for shortcuts.
Why would it make writing code more difficult? Code is mostly just English plus punctuation, which most layouts don't change.
The point is that alternative layouts generally doesn't make it _worse_ than qwerty (maybe some weird esoteric ones might do, but the popular ones being discussed here are at worst equal to qwerty in that regard).
[0]: https://www.jonashietala.se/blog/2021/06/03/the-t-34-keyboar...
I've decided somewhat recently that I'm just fine with qwerty, any money that I'm leaving on the table is probably fairly small because I think slower than I type...
Some of that change in perspective may have been a coworker who used Dvorak, and watching that dude type was a seriously painful experience.
Do not confuse throughput with ping and not using visual cortex vs using visual cortex.
My hands' physical travels reduced by a lot ever since I learned vim. But I don't think optimizing fingers' travel would give as much boost in overall speed. On the other hand, though, you can argue that fingers travel between keys a lot more often than between keyboard and mouse.
What's everyone's experience? Was it worth it for you learning another layout?
I designed my own layout to fix my RSI, which was very worth it. But I don't think it's worth it if you're after speed, the effort is better spent practicing typing IMO.
I wrote big lost about my experience here: https://www.jonashietala.se/blog/2023/11/02/i_designed_my_ow...
Seriously doubt this for such a frequently used key as yank, which is closer to hjk that require no word-based association at all
It is _meaning_ that bounds certain Vim commands to certain keys, not the position of the keys on your keyboard. Moving the keys around doesn't change their meaning—"w" is still "w", for "word"—so making all those mappings is utterly pointless.
Unless one uses a layout different from that of their physical keyboard, in which case WTF?
"Remapping" the whole keyboard around them is IMO a silly idea.
That choice and the subsequent decision to print the arrows on the corresponding keys of a single model of their product line are why we got hjkl for cursor movement in Vi first… and now seemingly everywhere.
I can parse only High and Low which is what ^H and ^L do.
I remapped probably Vim 10-15 keys 8 years ago, no issues so far.
Like, is it word forward or word backwards? W doesn't tell you.
So if you're used to qwerty W it makes perfect sense to keep the much stronger muscle memory intact when switching layouts and use non-W in the same spot
As another example `diw` reads "Delete Inner Word", or `dap` reads "Delete Around Paragraph".
It's way easier to just learn the new new keys and rely on the mnemonics IMO.
And in your D example your skipped the first part - why is it not delete forward/backward by character/word? Why is it not Dump for paste just like there is this weird Yank for copy? Why not Do to execute some command? Or maybe D should do something tied to its looks. After all X is delete based on visual mnemonic of crossing something out
It's even easier to learn relying on physical position mnemonics (like of your index J is go down by line, then go down by page is also index, but lower, so M). Or have adjacent fingers move left/right just like they move in cursors
(Btw, letter based mnemonics are also not useful for most of the world since they're tied to English)
Combining meaning with a physical position is even more superior than purely relying on one approach.
And to me, it was far easier to switch layout while relying on mnemonics than on key position, and this continues to be true even when I add new keybindings now when I switch between multiple layouts. Maybe other brains works differently though.
It does precisely that - because "once learned" muscle memory / spatial orientation would beat your conscious efforts to map ambiguous semantic rules every time since they're more common/primitive/intuitive ("move finger up to move up")
> And to me, it was far easier to switch layout while relying on mnemonics than on key position
So wait, you've seriously tried home row cursor movements in different layouts, then seriously tried moving to keycap-based cursor, and found home row keys to be worse despite their objective ergonomic benefit that the alternative layouts tout as their benefit over qwertys?
This isn't productive in any way.
Yes, there is some concept inside of this. Some commands are singular such as zz, some are paired (allmost all), some are double-paired, and only one set of commands is triple-paired, this is the list:
w W b B e E ge gE
Take care to find the logic by your own, please.
So I've received nothing from you, bBwW doesn't cover it. And I don't want anything from you, it's pretty clear you can add nothing useful to this conversation with such a combination of arrogance and ignorance
> Like, is it word forward or word backwards? W doesn't tell you.
W doesn't have to tell you anything. W being the reverse of w is a grammar rule that is supposed to be learned and internalized, like the other grammar rules (count, etc.).
> So if you're used to qwerty W it makes perfect sense to keep the much stronger muscle memory intact when switching layouts and use non-W in the same spot
No. What would make perfect sense would be to retrain your muscle memory around your new layout.
W is not the reverse of w in my comment once you read that it's about direction
And it makes no sense to go through the great pain of retraining when you can't explain the benefit