Skip to main content
Settings → Keyboard & Mouse → Keyboard shortcuts (⌘ ,) lists every shortcut in the app, grouped the same way Search Everywhere is. The search box at the top of Settings reaches this page too: type what a feature is called — split, commit, sftp — and the page narrows to the shortcuts for it. Action names work as well as labels, so a binding you read about in keybindings.json is one search away from the row that sets it.

Rebinding

Click a shortcut and press the new keys. It saves after a brief pause. Leaving an action unbound is how you hand a key back to whatever is running in the terminal: ⌥ 1…⌥ 9 jump between tabs by default, and vim wants them for its own tabs. Clear the nine Go to Tab rows and the digits go straight through. A cleared row shows — and grows a Reset button, which puts the default back. Restore all defaults at the bottom undoes every rebinding at once. There is no undo for that one.
Rebinding a shortcut

Rebinding a shortcut: the row waits for “Press keys…”

Actions with no default key

Some actions ship deliberately unbound, because there is no obvious key left to take: pane resize and swap, workspace selection, most git commands, SFTP, and the panel tabs. They are all in Search Everywhere, and all bindable here.

Editing config.json instead

An action’s value takes one of two shapes: Recording a shortcut on the Settings page replaces, so it writes the list shape. A shortcut you add that another action already uses is the one that runs. The exception is the terminal’s own shortcuts: copy, paste, find, clear scrollback and insert newline keep theirs while a terminal has focus. Up to 26.9.2 a string replaced the default, and the Settings page wrote strings. So a shortcut you recorded in those versions now works beside the default it was meant to replace. To drop the default again, record the shortcut again or wrap it in a list: "NewTab": ["cmd-shift-n"]. The syntax is modifiers joined by -, then the key. Chords are separated by a space. To keep a key for the program running in the terminal, unbind the action that holds it. vim’s tab keys, for instance:
An unknown action name, an invalid keystroke, or a line that is neither a shortcut nor a list of them is skipped with a warning in the log rather than breaking the rest of your bindings. The full action list is on the keyboard shortcuts page.

The tmux preset

Settings → Keyboard & Mouse → Keyboard shortcuts → Preset → tmux remaps pane and tab actions onto a prefix — ⌃ B by default, changeable in the Prefix field beside it. Two details that make it livable:
  • A bare prefix reaches the shell after about a second, so ⌃ B still works as “back one character” when you meant it.
  • Prefix plus an unbound key is passed straight through to the terminal, so a tmux binding you did not remap still lands in whatever is running.

Some non-obvious defaults