Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Keyboard shortcuts

Every shortcut is an action with a kebab-case name and a default chord. Rebind any of them in the keys section of settings.json; an override replaces that action’s default, and unlisted actions keep theirs.

Below, mod is the platform primary modifier: Cmd on macOS, Ctrl everywhere else. It is a shorthand for reading this table — not valid chord syntax. Write concrete modifiers in your own bindings.

The full action vocabulary

Tabs

ActionDefaultDoes
next-tabctrl+tabnext tab (Ctrl on every platform)
prev-tabctrl+shift+tabprevious tab
activate-tab-1 … -9mod+1 … mod+9jump to tab N
new-shell-heremod+tnew shell in the focused session’s directory
new-claude-session-heremod+alt+tnew Claude session in that directory
reopen-closed-tabmod+shift+treopen the tab you just closed
close-focusedmod+wclose the focused pane; a lone pane closes its tab
open-new-session(unbound)reserved — no surface yet

activate-tab-N is matched by physical key position, so it lands on the same keys on AZERTY and QWERTZ, where the number row produces &, é, … without Shift.

Splits and focus

ActionDefaultDoes
split-verticalmod+dsplit side by side
split-horizontalmod+shift+dsplit stacked
focus-leftmod+shift+leftfocus the pane to the left
focus-rightmod+shift+right… to the right
focus-upmod+shift+up… above
focus-downmod+shift+down… below
focus-next(unbound)cycle forward through panes
focus-prev(unbound)cycle backward

Terminal

ActionDefault (macOS)Default (Windows / Linux)
copycmd+cctrl+shift+c
pastecmd+vctrl+v, ctrl+shift+v
scroll-topcmd+upctrl+up
scroll-bottomcmd+downctrl+down
zoom-incmd+=, cmd+plus, cmd+shift+plusctrl+… (same three)
zoom-outcmd+-ctrl+-
zoom-resetcmd+0ctrl+0

Copy/paste is the one pair whose default is irregular per platform: on Windows and Linux Ctrl+C must stay the interrupt, so copy takes Shift. Ctrl+C sends SIGINT everywhere.

Zoom-in binds three chords because = is the unshifted face of the + key on QWERTY and the unshifted key on AZERTY; between them the same gesture works across layouts.

App

ActionDefaultDoes
focus-searchmod+ffocus the sidebar search box
toggle-sidebarmod+bshow / hide the sidebar
capturemod+shift+swrite a state dump + screenshot
toggle-recordmod+shift+rstart / stop a GIF screencast

Not in the keymap

GestureDoes
Ctrl+Cinterrupt (SIGINT) — passed through to the program
Escapecancel an open prompt, rename or doc pane
Enterconfirm an open prompt
Drag a selectionselect; copies too with terminal.copy_on_select (off by default)
Right-clickpaste, with terminal.paste_on_right_click (off by default)
Wheelscroll back through history, or the wheel event to a program reading the mouse
Click, drag, right-click in a program reading the mousethe event goes to the program — vim, lazygit, Claude Code’s /resume; nothing is selected or pasted locally
Shift+drag in such a programthe terminal’s own selection, as a plain drag is at a shell
Cmd/Ctrl+clickopen a URL, hidden (OSC 8) hyperlink or file path under the pointer
Drag a tabreorder it

Escape and Enter are bound to no action on purpose: they belong to whichever overlay is open. That is also what makes them the only way an MCP caller can answer a prompt it armed.

Chord syntax

Case- and order-insensitive. Modifiers ctrl, shift, alt, cmd, joined to a key with +. Aliases: control for ctrl, option for alt, and super, logo, win or meta for cmd. The + key itself is spelled plus, since a literal + is the separator:

"keys": {
  "copy": "ctrl+y",
  "paste": ["ctrl+shift+v", "shift+insert"],
  "activate-tab-1": "alt+1"
}

One chord or a list of chords per action. Unknown action names and unparsable chords are logged and skipped — they do not invalidate the rest of the file.

Reading the live keymap

The stdio MCP server publishes the action catalogue — each action with its default chords and the override settings.json sets for it, if any — as a resource at termherd://keys/schema. It is generated from the same in-code table this page describes, so it cannot drift from the binary you are running. Two gaps: the activate-tab-N family is not listed, and copy / paste show no default, because theirs differ per platform and are set outside that table — this page has them.