Maksym Prokopov
Personal blog powered by a passion for technology.

Use Cmd Instead of Ctrl in Your Terminal

22.02.2026
Reading time: 3 min.

I can’t imagine using a terminal any other way: every Ctrl keybinding remapped to Cmd.

Think about it. Ctrl lives in the corner of your keyboard. Your pinky stretches to reach it, and then contorts into whatever combination you need. Cmd sits right under your thumbs — the strongest, most naturally resting fingers on the keyboard. Why wouldn’t you use it?

The readline connection

In Unix-like systems, the readline library provides Emacs-style navigation in shells like bash and zsh. These keybindings are everywhere:

  • Ctrl-A / Ctrl-E — beginning / end of line
  • Ctrl-F / Ctrl-B — forward / back one character
  • Ctrl-N / Ctrl-P — next / previous in history
  • Ctrl-K — kill to end of line
  • Ctrl-H — backspace (yes, instead of reaching for Backspace)
  • Ctrl-J — enter (instead of reaching for Enter)
  • Ctrl-D — delete forward / EOF
  • Ctrl-W — delete word backward
  • Ctrl-U — clear line

Once you remap Ctrl to Cmd, these become thumb+letter combinations. Cmd-N and Cmd-P for history navigation feels like WASD in games. Cmd-H for backspace and Cmd-J for enter mean your fingers never leave home row.

Setup

I use three layers depending on the app:

Karabiner-Elements (system-wide)

For apps that aren’t terminal emulators, Karabiner handles the remapping:

git clone https://github.com/mprokopov/karabiner.ts.config
cd karabiner.ts.config
npm install && npm run build

This builds a Karabiner profile that maps Cmd+key to Ctrl+key system-wide, with sensible exceptions for standard macOS shortcuts you want to keep (Cmd-C for copy, Cmd-V for paste, Cmd-T for new tab).

Ghostty

Ghostty has first-class keybind support. Add these to your config:

keybind = cmd+a=text:\x01
keybind = cmd+b=text:\x02
keybind = cmd+d=text:\x04
keybind = cmd+e=text:\x05
keybind = cmd+f=text:\x06
keybind = cmd+g=text:\x07
keybind = cmd+h=text:\x08
keybind = cmd+i=text:\x09
keybind = cmd+j=text:\x0A
keybind = cmd+k=text:\x0B
keybind = cmd+l=text:\x0C
keybind = cmd+m=text:\x0D
keybind = cmd+n=text:\x0E
keybind = cmd+o=text:\x0F
keybind = cmd+p=text:\x10
keybind = cmd+q=text:\x11
keybind = cmd+r=text:\x12
keybind = cmd+s=text:\x13
keybind = cmd+u=text:\x15
keybind = cmd+w=text:\x17
keybind = cmd+x=text:\x18
keybind = cmd+y=text:\x19
keybind = cmd+z=text:\x1A

macos-option-as-alt = true

Note: Cmd-C, Cmd-V, and Cmd-T are intentionally left out — you want those for copy, paste, and new tab.

iTerm2

For iTerm2, I’ve published a profile JSON as a GitHub Gist. Import it via Profiles → JSON Profiles. It does the same thing: maps every Cmd+letter to its corresponding Ctrl code using “Send Hex Code” actions.

Why bother?

Your pinky is the weakest finger on your hand. Ctrl shortcuts tax it constantly. RSI from Emacs pinky is a real thing.

Your thumb, on the other hand, is strong, naturally positioned over Cmd, and mostly idle during typing. Redirecting control sequences to it is pure ergonomic sense.

After a week of adjustment, you won’t go back.