Keyboard
Caps Lock, reborn: the remap that makes everything else reachable.
The most useful key on the keyboard was wasted on Caps Lock. This setup turns it into the two keys you press most in a terminal — Escape and Control — so the shortcuts on every other page are right under your left pinky.
#One key, two jobs
Via Karabiner-Elements, Caps Lock becomes a dual-role key:
- Tap it → Esc. The single most-pressed key in Vim (it's how you leave Insert mode and get back to Normal) — now without reaching to the top-left corner.
- Hold it → Control. Press it together with another key for any Ctrl-shortcut, with your finger already on the home row.
You lose nothing: actual Caps Lock toggling is gone (almost no one misses it), and the key earns its prime spot many times a minute.
#Why this is the keystone
Look back at the other pages and notice how much lives on Esc, Ctrl, and Alt:
| Neovim | Esc returns to Normal mode — the move you make constantly |
| tmux | The prefix is Ctrla; pane nav is Alth/j/k/l |
| Shell | Line editing is all Ctrl — CtrlA/E/W/U/R |
Put Esc and Ctrl under your strongest, nearest finger, and make sure Option sends real Alt. That whole vocabulary stops being a stretch.
Groundwork opens Karabiner after install/update if it is not running, but macOS won't let it watch the keyboard until you approve it. In System Settings → Privacy & Security, grant Input Monitoring and allow its driver / system extension (a separate prompt). A script can't click these for you — full steps are on the Troubleshooting page.
#The other keyboard tweaks
The setup also nudges a few macOS keyboard defaults so the terminal feels right:
| Fast key repeat | Hold a key and it repeats quickly, with a short delay before it starts — so j/k scrolling and holding a motion in Vim are snappy |
| Press-and-hold off | Holding a key repeats it instead of popping up the accent menu — essential for Vim, where you hold keys to move |
| Option as Alt | In Ghostty, the ⌥ key sends a real Alt, so shell shortcuts like AltF (forward a word), AltC (fzf folder jump), and Alth/j/k/l pane navigation work |
The key-repeat settings are read when an app launches, so they fully take hold after you log out and back in (or restart). If holding a key still shows the accent popup, that's the one to do.
#Put it to use
Tap for Escape
Open nvim, press i to type, then tap Caps Lock to pop back to Normal mode. Do it a few times — this replaces the corner Esc reach you'd otherwise make hundreds of times a day.
Hold for Control
At the shell, hold Caps Lock and press R — that's CtrlR, history search. Then hold Caps and tap A / E to jump to the start / end of the line. Same finger, no stretch.
#Going deeper
- Karabiner-Elements documentation — for any other remap you dream up (other dual-role keys, app-specific rules, home-row mods).
- Apple's keyboard settings — the System Settings → Keyboard panel mirrors several of these.