ryanheise.com → colemak

Learning Colemak

My Colemak and QWERTY speed over the first month while learning Colemak.

These days, my Colemak speed is 130 WPM.

Maintaining skill in both layouts

When I first started learning the Colemak keyboard layout, I tried to maintain a skill in both QWERTY and Colemak simultaneously. This was actually not too difficult to do since Colemak keeps many keys in the same place, and the result after 30 days of practice was 104 WPM for Colemak and 95 WPM for QWERTY (down from 104 WPM at the start).

After this little experiment, I discovered a nice way to switch to Colemak on other computers that did not have it installed: simply type in http://www.ryanheise.com/colemak.exe (provided that computer has Internet access) and the layout will automatically change. For computers without Internet access, you might carry the exe on a USB disk. Now, I do not bother with QWERTY anymore (although it seems my fingers still have the muscle memory).

For those interested in maintaining a skill in both layouts, my strategy was to type in QWERTY for about 5-10 minutes each morning immediately after waking up, and then to switch to Colemak for the rest of the day. You may find it surprisingly easy to switch back and forth.

Tips for learning

What is my current typing speed?

My current typing speed record can be watched below. It was set at the hi-games.net typing test.

Keyboard bindings for Vim

Vim is an extremely efficient text editor that I use for writing emails and editing any sort of text file. Vim's commands are all controlled from the keyboard: 'd' for delete, 'w' to move the cursor forward one word, 'dw' to delete the text moved over by 'w', '2dw' to delete two words, etc. Left/Down/Up/Right navigation is located on the QWERTY keys H/J/K/L so that the typist's hands never need to reach for arrow keys or the mouse. Unfortunately, these navigation keys are not so intuitive under Colemak and so I needed to find some more appropriate mappings. After experimenting with many alternatives, here is what I finally decided on and am very happy with:

noremap n j|noremap <C-w>n <C-w>j|noremap <C-w><C-n> <C-w>j
noremap e k|noremap <C-w>e <C-w>k|noremap <C-w><C-e> <C-w>k
noremap s h
noremap t l

noremap f e
noremap k n
noremap K N 
noremap U <C-r>