That’s my new keyboard from WASD Keyboards. I set up the color scheme myself — you might not be surprised to learn that I have mild color blindness — and used a premade layout for OS X with Photoshop keyboard shortcuts printed on the keys. I don’t really use Photoshop that often, but I’ve been using it for decades at this point, so I figured I might as well learn the shortcuts.

They also offer a similar Vim layout, and I think I’m going to get that next. Although I’ve been using Vim since it was called vi, I’ve never actually learned Vim’s keyboard navigation shortcuts. One big irony about the popularity of Vim is that gung-ho Vim newbies make a big deal of its keyboard nav, but that’s pointless in my view for two reasons:

  • Vim has had arrow key support for like 15 years at this point.
  • If you’re not using the arrow keys to get around in Vim, you’re more likely to be getting around via the search functionality than the keyboard nav.

Anyway, for one reason or another, I’ve gone a long time without needing Vim’s keyboard nav shortcuts, but I am finally learning them now, because I accidentally ordered a keyboard with no arrow keys.

This is also forcing me to use a bash shortcut. I already use it occasionally, but now I have to use it a lot more. It’s !! and it means “last command.” Here’s an example:

I was writing another blog post, and I wanted to use Jekyll’s facility for handling relative links. Basically, if you use their Liquid templating with baseurl and post_url, you get relative links which function equally well on localhost as they do on your live site, and don’t require you to hardcode any URLs. I couldn’t remember the exact syntax, so I did a search using ag to find it. (The search only succeeded by coincidence and luck; although the syntax doesn’t include the word “relative” anywhere, I used the syntax in a post which also included the word “relatively” for unrelated reasons.) Then I wanted to edit the search to limit it to the _posts directory.

Normally I’d do this with the arrow keys. I’d just arrow up and add the word _posts. But with this keyboard, the only way to use the arrow keys is to lift my hands a few inches and use the arrow keys on my MacBook Pro, which is sitting on a stand very close by. This was obviously too much work, so I used !! instead. Then I used it again, wrapping it in a subshell with $(!!), to pass the whole thing as an argument to Vim and open the file.

(Actually, normally I’d use rg instead of ag, because you have to keep your gratuitous hipster grep alternatives up to date, but it’s not installed on this particular computer, for various reasons.)

This impulsively-ordered keyboard also has no backticks, but backticks are essential for code samples in Markdown, so I’ve added the backticks character to my .vimrc file as a pre-loaded register:

let @a = "✓ "
let @b = "✗ "
let @c = "`"

As you can see, I already have Unicode ✓ and ✗ preloaded into a couple Vim registers as well. This is just to facilitate writing quick to-do lists in Vim.

As geeky and excessive as this all is, and despite the fact that this was obviously an impulse purchase, I’m very happy with these developments in my workflow. The limitations of the keyboard are forcing me to develop my Vim and bash skills. It’s also very comfortable for typing, more so than the janky Apple Bluetooth/USB keyboard it replaced, and it doesn’t do all of the horrible things that Apple thinks I want a keyboard to do, like randomly interrupt me to announce its absence when I go downstairs to hack on my sofa, or automatically connect via Bluetooth even after I explicitly plug it into USB.

The keyboard shortcut labelling is also pretty awesome. I would find it extremely useful in Cinema 4D and Ableton Live, especially with the new navigation enhancements coming in Live 10.1 (which is currently in beta). As I said, I think I may also get another one with Vim shortcuts on it, although I’m not 100% certain about that. Some of the labelling would be inaccurate because of ways I’ve customized my .vimrc.

So maybe I’ll just chill for now and enjoy the new keyboard I’ve got. Either way, I’ve definitely joined the WASD bandwagon and can totally endorse them. I’ve also been taunted by a fellow keyboard hipster about choosing WASD over Keyboardio, so maybe I’ll try that out someday too.