I use Mac OS X and Arch Linux and occasionally log into FreeBSD and Debian servers by ssh. My favoured tools are zsh, ssh, tmux, git, vim and irssi. I use iTerm2 on Mac OS X and unicode-rxvt on Arch Linux, where I also use Xmonad as window manager.

Currently Ctrl+a+n shifts to the next window in tmux, Alt+right shifts to the next in irssi, Cmd+right shifts to the next tab in iTerm2, Ctrl+w+w shifts to the next buffer in vim and so on. Basically it's just a mess and even though some of these sit in the muscle memory most don't. I'm looking for what could be a consistent keybinding scheme.

In my mind I figure Cmd/Super/Win ought to be used by the OS desktop environment and/or window manager, Alt would be tmux and Ctrl would be vim and irssi. That is going from right to left on the keyboard; Cmd, Alt, Ctrl, and in a somewhat hierarchical way, OS/DE/WM, multiplexer, editor/irc client.

Hence, something like this:

Cmd+Left/+Right - Switch workspace (Xmonad)
Alt+Left+/Right - Switch tmux window
Ctrl+Left/+Right - Switch irssi window/vim buffer

Cmd+1 - Switch to workspace 1 (Xmonad)
Alt+1 - Switch to tmux window 1
Ctrl+1 - Switch to irssi window 1/vim buffer 1

Would this be viable? If not, what uniform keybindings could be used?


I drew a picture (the colours are horrible, I know) to illustrate what I had in mind. I use Dvorak and replaced vim hjkl movement with dhtn - I'll write left/down/up/right to have it make sense for those who don't use vim. Let's keep it to iTerm2 rather than the entire OS X desktop environment (as well as Gnome and KDE). Basically it comes down to this:

cmd+left/right/number for workspaces in Xmonad (or whatever window manager you like)
alt+left/right/number for windows in tmux
ctrl+alt+left/down/up/right/number for buffers in vim
ctrl+alt+left/right/number for windows in irssi
ctrl+left/down/up/right for home/pg down/pg up/end in vim, irssi and zsh

enter image description here In OS X ctrl+left/down/up/right already works like the above, and alt+left/right moves the cursor by word as opposed to just left/right which moves it by character.

Wouldn't this be fairly logical and intuitive? Am I missing something (conflicting keybindings) or is this doable?

  • Ugh, good luck there ... that's the road to paradise, that is ...
    – Rook
    Jan 17, 2012 at 0:21

1 Answer 1


I tried putting together a cheat sheet or reference card. After exploring various possibilities I ended up doing the following:

  1. Switch from a Swedish keyboard to an English (international) due to the latter being (in my opinion) superior when writing code as well as still being able to type åäö by alt+a/+w/+u+a/+o.
  2. Switch from QWERTY to Dvorak because I like how the keys are positioned (no scientific claims here) for programming purposes (had a look at "Programmer Dvorak" but that was too much).
  3. Replace vim hjkl movement with dhtn, dD with jJ (mnemonic: "junk"), K with H and the ctrl+w prefix with ctrl+o.
  4. Some minor additions (and unbinding advanced features to start out easy)...

TL;DR - stick to using prefixes where available, e.g. ctrl+a in tmux, ctrl+o (Dvorak)/ctrl+s (QWERTY) in vim and irssi. This seems to have the least consequences and be somewhat cross-platform-friendly.

vim dvorak reference card

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.