--- title: "Keybindings" description: "Rebinding anything, chord sequences, and the tmux preset." --- **Settings → Keybindings** (⌘ ,) lists every shortcut in the app, grouped the same way the command palette 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. | | | |---|---| | Press keys | Set the binding | | Press more keys | Chain a sequence — ⌃ B then X | | Esc | Cancel | | | Remove the last key — or, pressed first, reset the shortcut to its default | **Restore all defaults** at the bottom undoes every rebinding at once. There is no undo for that one. Rebinding a shortcut ## 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 the command palette, and all bindable here. ## Editing `config.json` instead ```json { "keybindings": { "NextTab": "cmd-shift-]", "SplitRight": ["cmd-d"], "ResizePaneLeft": "ctrl-alt-left", "ToggleFullscreen": "" } } ``` An action's value takes one of two shapes: | Value | Means | |---|---| | `"cmd-shift-]"` | **Add** this shortcut. The default keeps working — ⌃ ⇥ still switches tabs | | `["cmd-d"]` | **Replace**: exactly these shortcuts, nothing else. List several to have several | | `""` or `[]` | **Unbind** the action | Recording a shortcut on the Settings page replaces, so it writes the list shape. A shortcut you add that another action already uses wins: it is the one that runs. The syntax is modifiers joined by `-`, then the key. Chords are separated by a space. | Token | Means | |---|---| | `secondary` | on macOS, Ctrl elsewhere | | `cmd` · `ctrl` · `alt` · `shift` | Literal modifiers | | `ctrl-b n` | A two-key sequence | An unknown action name or an invalid keystroke 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](/reference/keyboard-shortcuts) page. ## The tmux preset **Settings → Keybindings → Preset → tmux** remaps pane and tab actions onto a prefix — ⌃ B by default, changeable in the **Prefix** field beside it. | | | |---|---| | ⌃ B C · X | New tab · close tab | | ⌃ B % · " | Split right · split down | | ⌃ B ←→↑↓ | Move focus | | ⌃ B ⌃ ←→↑↓ | Resize the pane | | ⌃ B O · ; | Next pane · previous pane | | ⌃ B { · } | Swap with the previous · next pane | | ⌃ B Z | Zoom the pane | | ⌃ B N · P | Next tab · previous tab | | ⌃ B 19 | Jump to a tab | 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 | | | |---|---| | ⇧ ⏎ · ⌥ ⏎ | Insert a newline at the prompt instead of submitting (`InsertNewline`) | | ⌘ ⇧ ⏎ | Zoom the focused pane | | ⌘ ⇧ E | Toggle the code panel | | ⌘ ⇧ R | Restart the SSH session in this pane | | ⌘ ⇧ O | Workspace switcher | | ⌘ ⇧ N | New workspace |