Terminal keyboard map
Every terminal app shortcut, and how to rebind them in keybindings.json.
These tables come from the app's own keybinding definitions. CtrlY shows the same list in the app.
Global#
| Action | Keys | Description |
|---|---|---|
| Settings | Keysctrl O | DescriptionOpen settings. |
| Session | Keysctrl shift X | DescriptionOpen session details: stats, export, rename, delete. |
| New session | Keysctrl N | DescriptionStart a new session with the current model. |
| Model | Keysctrl M | DescriptionOpen the model picker. |
| Options | Keysctrl L | DescriptionOpen model options, like reasoning effort and fast mode. |
| Todos | Keysctrl T | DescriptionOpen the run's todo list. |
| Panel | Keysctrl shift A | DescriptionShow or hide the side panel. |
| Next panel | Keysctrl shift ] | DescriptionOpen the next side-panel tab. |
| Previous panel | Keysctrl shift [ | DescriptionOpen the previous side-panel tab. |
| Next space | Keysctrl shift → | DescriptionShow the next space (Spaces on); from a chat, the sessions list opens on it. |
| Previous space | Keysctrl shift ← | DescriptionShow the previous space (Spaces on); from a chat, the sessions list opens on it. |
| Context | Keysctrl shift G | DescriptionShow what fills the context window. |
| Main session | Keysctrl shift M | DescriptionOpen the Main session for this directory, or create it. Needs the "Main session" and "Use daemon runtime" settings. |
| Usage | Keysctrl P | DescriptionOpen plan limits and credits for each provider. |
| Keybindings | Keysctrl Y | DescriptionList every shortcut. |
| Palette | Keysctrl shift P | DescriptionSearch actions, commands, sessions and settings. |
| Cycle agent | Keysshift tab | DescriptionSwitch to the next agent profile. |
| Messages | Keysctrl S | DescriptionSelect a previous message. |
| Cancel tool | Keysctrl K | DescriptionCancel one tool call and keep the run going. |
| Abort | Keysctrl esc | DescriptionStop the run and deny pending approvals. If your terminal cannot send ctrl+esc, rebind it. |
| Retry | Keysctrl R | DescriptionPick up the run that stopped: retry, continue, or sign in again when a sign-in stopped it. |
| Cwd | Keysctrl H | DescriptionChange the working directory. |
| Paste clipboard | Keysctrl V | DescriptionPaste text or an image from the system clipboard. |
| Edit in $EDITOR | Keysctrl G | DescriptionWrite the prompt in $EDITOR or $VISUAL. Needs the "Edit prompt in $EDITOR" setting. |
Chords with CtrlShift need a terminal that reports the kitty keyboard protocol, such as kitty, WezTerm or Ghostty. On macOS, Terminal.app drops Shift, so CtrlShiftX arrives as CtrlX. In Terminal.app, rebind these actions to chords without Shift.
Sessions list#
| Action | Keys | Description |
|---|---|---|
| Next space | Keysshift tab | DescriptionShow the next space in the sessions list (wraps), also while typing a search. Needs 2 or more spaces. In a chat, shift+tab still cycles agents. |
These keys act only in the sessions list, so ShiftTab still cycles agents in a chat. ← → and a click on the space name in the title also switch spaces: sessions and forks.
Message queue#
| Action | Keys | Description |
|---|---|---|
| Select queue | KeysUnbound | DescriptionSelect the queued messages (or press ↑ on an empty prompt). |
| Push | Keysctrl enter | DescriptionSend the selected queued message into the running turn. |
| Drop | Keysbackspace | DescriptionRemove the selected queued message. |
↑ on an empty prompt enters the queue without a binding.
Messages and session details#
Keys inside an open message (fork, delete, copy, edit) and session details (export, compact, favorite and more) are on sessions and forks. They rebind in the same file.
Fixed keys#
| Key | Where | Does |
|---|---|---|
| Esc | Chat | Go to the sessions list |
| Esc | Popups, modals, search, queue | Close or leave |
| Esc | File-edit approval | Deny |
| Enter | Prompt | Send |
| ShiftEnter | Prompt | New line |
| Tab | Completion popup | Pick |
| ? | Empty prompt | Search the conversation |
| ! | Empty prompt | Shell mode |
| CtrlC | Anywhere | Copy the selection of the prompt or an input, else quit (Settings › UI › Ctrl+C behavior) |
| CtrlX | Prompt or input with a selection | Cut |
| ← → | Settings | Switch tab |
| CtrlB CtrlF | Settings › Keybindings and Logs | Scroll half a page up or down |
| Home End | Settings › Keybindings and Logs | Jump to the top or bottom |
| Space | Setup wizard | Pick the row, or turn it on or off |
| Enter | Setup wizard | Continue |
| S | Setup wizard | Skip the step, if it can be skipped |
| Esc | Setup wizard | Go back one step, or close a re-run on its first step |
Settings tabs also have their own Ctrl keys, such as CtrlD to clear an extension secret: Settings, MCP, skills and extensions, remote hosts.
Rebind a key#
Shortcuts live in keybindings.json in your config folder (files and folders).
- Open Settings › Keybindings and press Enter. If the file does not exist, zidane creates it with every action and its default. The file opens in
$VISUALor$EDITOR. If neither is set, the system opener opens it (openon macOS,xdg-openon Linux). - Change the values and save the file.
- Restart the app. zidane reads the file only at start.
{
// Terminal.app drops shift: give the session modal a plain chord.
"openSessionDetails": "ctrl+e",
// Two chords for one action.
"abortRun": "ctrl+escape | ctrl+q",
// An array also lists several chords.
"openUsagePanel": ["ctrl+p", "alt+u"]
}| Example | Rule |
|---|---|
ctrl+shift+p | Modifiers: ctrl, shift, alt (or option), meta (or cmd) |
"ctrl+w | cmd+w" | Several chords. An array (["ctrl+w", "cmd+w"]) also works. |
Shift+Ctrl+P | Case and modifier order do not matter |
ctrl-p | - also separates the parts |
esc, enter | Key names: escape (esc), return (enter), space, backspace, up, pgup, [ |
The file allows // and /* */ comments. If zidane cannot parse an entry, the action keeps its default. An empty value ("") also keeps the default, so it does not unbind a built-in action. If the whole file does not parse, every action keeps its default.
Extension shortcuts use the same file, keyed by their id. Settings › Keybindings lists each id. An extension shortcut cannot take Esc, CtrlEsc, CtrlC or a single letter without Ctrl, Alt or Cmd.
Bindings are the same on macOS and Linux, because the terminal reports the keys. Most terminals cannot send Cmd. The desktop app has its own Cmd map and reloads it without a restart: desktop keyboard.