Follow Discord
Sweep 06 Nov 2026 · 01:32Z Build v2.1.319 537 read Stable v2.1.311 Latest v2.1.319 Next v2.1.319 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One change · claude-code

Customize keyboard shortcuts changedkeybindings

Nearest release: v2.1.309, published 2 hours before upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.

Upstream edited this page at 22 Oct 2026 22:51 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 23 Oct 2026 19:07 UTC.

Upstream edited
Recorded here
Lines+41added
Lines−41removed
From line 57 where the diff opens
First seen 14 Aug 2026 this site's first read of the page
Recorded edits45to this page, all time

The whole hunk

from line 57, old and new numbered
/
lines
from line 57
5757| `Footer` | Footer indicator navigation (tasks, teams, diff, artifacts) |
5858| `MessageSelector` | Rewind and summarize dialog message selection |
5959| `DiffDialog` | [Diff viewer](#diff-actions) navigation |
60| `DiffPanel` | The [diff panel](/docs/en/interactive-mode.md#diff-panel) is open |
60| `DiffPanel` | The [diff panel](https://code.claude.com/docs/en/interactive-mode.md#diff-panel) is open |
6161| `ModelPicker` | Model picker effort level |
6262| `EffortSlider` | Effort slider opened by `/effort` |
6363| `Select` | Generic select/list components |
from line 65
6565| `AbovePrompt` | The [band above the prompt](#above-prompt-actions), or a button in it, has keyboard focus |
6666| `AbovePromptInput` | An input field in the band above the prompt or in a mod's pane has keyboard focus |
6767| `AbovePromptSelect` | A select in the band above the prompt or in a mod's pane has keyboard focus |
68| `Pane` | A pane drawn by a [mod](/docs/en/plugins/mods/interface.md#know-which-keys-your-mod-can-receive) has keyboard focus |
68| `Pane` | A pane drawn by a [mod](https://code.claude.com/docs/en/plugins/mods/interface.md#know-which-keys-your-mod-can-receive) has keyboard focus |
6969| `PaneField` | An input field or select in a mod's pane has keyboard focus |
70| `Agents` | [Agent view](/docs/en/agent-view.md) (`claude agents`) |
70| `Agents` | [Agent view](https://code.claude.com/docs/en/agent-view.md) (`claude agents`) |
7171| `Scroll` | Conversation scrolling and text selection in fullscreen mode |
7272 
7373Before v2.1.205, a `Doctor` context and a `doctor:fix` action existed for the `/doctor` diagnostics screen.
from line 85
8585| `app:interrupt` | Ctrl+C | Cancel current operation |
8686| `app:exit` | Ctrl+D | Exit Claude Code. Press twice within 800ms to confirm |
8787| `app:redraw` | (unbound) | Force terminal redraw |
88| `app:toggleTodos` | Ctrl+T | Toggle visibility of Claude's to-do checklist. This is not the [`/tasks`](/docs/en/commands) background-task view |
88| `app:toggleTodos` | Ctrl+T | Toggle visibility of Claude's to-do checklist. This is not the [`/tasks`](https://code.claude.com/docs/en/commands) background-task view |
8989| `app:toggleTranscript` | Ctrl+O | Toggle verbose transcript |
9090 
9191### History actions
from line 106
106106| :- | :- | :- |
107107| `chat:cancel` | Escape | Cancel current input |
108108| `chat:clearInput` | Ctrl+L | Force a full screen redraw, preserving input and conversation |
109| `chat:clearScreen` | Cmd+K | Same as `chat:clearInput`. See [Clear the conversation](/docs/en/fullscreen.md#clear-the-conversation) for how Cmd+K behaves on iTerm2 and Terminal.app |
110| `chat:killAgents` | Ctrl+X Ctrl+K | Stop all running [background subagents](/docs/en/sub-agents.md#run-subagents-in-foreground-or-background) in this session and turn off [artifact auto-replies](/docs/en/artifacts.md#let-claude-reply-to-comments-on-its-own) for the rest of it. Press the shortcut twice within 3 seconds to confirm. You can press it while a background subagent's permission prompt is open |
109| `chat:clearScreen` | Cmd+K | Same as `chat:clearInput`. See [Clear the conversation](https://code.claude.com/docs/en/fullscreen.md#clear-the-conversation) for how Cmd+K behaves on iTerm2 and Terminal.app |
110| `chat:killAgents` | Ctrl+X Ctrl+K | Stop all running [background subagents](https://code.claude.com/docs/en/sub-agents.md#run-subagents-in-foreground-or-background) in this session and turn off [artifact auto-replies](https://code.claude.com/docs/en/artifacts.md#let-claude-reply-to-comments-on-its-own) for the rest of it. Press the shortcut twice within 3 seconds to confirm. You can press it while a background subagent's permission prompt is open |
111111| `chat:cycleMode` | Shift+Tab\* | Cycle permission modes |
112112| `chat:modelPicker` | Meta+P | Open model picker |
113113| `chat:fastMode` | Meta+O | Toggle fast mode |
114114| `chat:thinkingToggle` | Meta+T | Toggle extended thinking |
115115| `chat:submit` | Enter | Submit message |
116| `chat:queueSubmit` | Ctrl+X Enter | Submit the message, marked to wait its turn: while Claude is working, Claude Code [queues it](/docs/en/interactive-mode.md#queue-messages-while-claude-works) and never interrupts the turn. Unlike `chat:submit`, it submits the draft even while an autocomplete suggestion is highlighted. Requires v2.1.247 or later |
117| `chat:sendNow` | Ctrl+Enter, Ctrl+X Ctrl+S | Send your [queued messages](/docs/en/interactive-mode.md#queue-messages-while-claude-works), and your draft with them, right away. [When Claude Code sends what you queued](/docs/en/interactive-mode.md#when-claude-code-sends-what-you-queued) covers what happens to the turn Claude is working on. When nothing is running, the key submits the draft, and in [shell mode](/docs/en/interactive-mode.md#shell-mode-with-prefix) it only queues the command. Terminals that don't report extended keys deliver `Ctrl+Enter` as plain `Enter`, so `Ctrl+X Ctrl+S` is the binding that works in any terminal. Requires v2.1.275 or later |
116| `chat:queueSubmit` | Ctrl+X Enter | Submit the message, marked to wait its turn: while Claude is working, Claude Code [queues it](https://code.claude.com/docs/en/interactive-mode.md#queue-messages-while-claude-works) and never interrupts the turn. Unlike `chat:submit`, it submits the draft even while an autocomplete suggestion is highlighted. Requires v2.1.247 or later |
117| `chat:sendNow` | Ctrl+Enter, Ctrl+X Ctrl+S | Send your [queued messages](https://code.claude.com/docs/en/interactive-mode.md#queue-messages-while-claude-works), and your draft with them, right away. [When Claude Code sends what you queued](https://code.claude.com/docs/en/interactive-mode.md#when-claude-code-sends-what-you-queued) covers what happens to the turn Claude is working on. When nothing is running, the key submits the draft, and in [shell mode](https://code.claude.com/docs/en/interactive-mode.md#shell-mode-with-prefix) it only queues the command. Terminals that don't report extended keys deliver `Ctrl+Enter` as plain `Enter`, so `Ctrl+X Ctrl+S` is the binding that works in any terminal. Requires v2.1.275 or later |
118118| `chat:newline` | Ctrl+J | Insert a newline without submitting |
119119| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Undo last action |
120| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Open in external editor. The [agent view dispatch input](/docs/en/agent-view.md#keyboard-shortcuts) follows this action's single-keystroke bindings too |
120| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Open in external editor. The [agent view dispatch input](https://code.claude.com/docs/en/agent-view.md#keyboard-shortcuts) follows this action's single-keystroke bindings too |
121121| `chat:stash` | Ctrl+S | Stash current prompt |
122122| `chat:imagePaste` | Ctrl+V (Alt+V on Windows and WSL) | Paste image from clipboard. On WSL, both shortcuts are bound by default |
123| `command:<name>` | (unbound) | Run the [command](/docs/en/commands.md) `/<name>`. For example, `"meta+g": "command:compact"` in a `Chat` block makes `Meta+G` run `/compact` |
123| `command:<name>` | (unbound) | Run the [command](https://code.claude.com/docs/en/commands.md) `/<name>`. For example, `"meta+g": "command:compact"` in a `Chat` block makes `Meta+G` run `/compact` |
124124 
125125\*On Windows without VT mode (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), defaults to Meta+M.
126126 
from line 148
148148| `confirm:nextField` | Tab | In the `/fast` dialog, turn fast mode on or off |
149149| `confirm:previousField` | (unbound) | Claude Code doesn't respond to this action, and a `keybindings.json` that names it remains valid |
150150| `confirm:toggle` | Space | Toggle selection |
151| `confirm:cycleMode` | Shift+Tab\* | On a file permission prompt, closes an open [comment field](/docs/en/permissions.md#add-a-comment-when-you-answer-a-permission-prompt); with no field open, selects the option that allows the action for the rest of the session, when the prompt offers that option |
151| `confirm:cycleMode` | Shift+Tab\* | On a file permission prompt, closes an open [comment field](https://code.claude.com/docs/en/permissions.md#add-a-comment-when-you-answer-a-permission-prompt); with no field open, selects the option that allows the action for the rest of the session, when the prompt offers that option |
152152 
153153\*On Windows without VT mode (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), defaults to Meta+M.
154154 
from line 195
195195| `transcript:toggleShowAll` | Ctrl+E | Toggle show all content |
196196| `transcript:exit` | q, Ctrl+C, Escape | Exit transcript view |
197197 
198`transcript:toggleShowAll` applies in the classic renderer only; in [fullscreen rendering](/docs/en/fullscreen.md), the transcript viewer doesn't offer a show-all toggle.
198`transcript:toggleShowAll` applies in the classic renderer only; in [fullscreen rendering](https://code.claude.com/docs/en/fullscreen.md), the transcript viewer doesn't offer a show-all toggle.
199199 
200200### History search actions
201201 
from line 209
209209| `historySearch:execute` | Enter | Execute selected command |
210210| `historySearch:cycleScope` | Ctrl+S | Cycle scope: session, project, everywhere |
211211 
212The `historySearch:next`, `historySearch:accept`, `historySearch:cancel`, and `historySearch:execute` defaults apply to the inline history search in the classic renderer, which always searches prompts from all projects. `historySearch:cycleScope` takes effect only in [fullscreen rendering](/docs/en/fullscreen.md), where `Ctrl+R` opens a search dialog instead and `Ctrl+S` cycles its scope. The dialog's other keys are fixed and can't be rebound: `Enter` or `Tab` places the highlighted match in the prompt input and `Esc` cancels.
212The `historySearch:next`, `historySearch:accept`, `historySearch:cancel`, and `historySearch:execute` defaults apply to the inline history search in the classic renderer, which always searches prompts from all projects. `historySearch:cycleScope` takes effect only in [fullscreen rendering](https://code.claude.com/docs/en/fullscreen.md), where `Ctrl+R` opens a search dialog instead and `Ctrl+S` cycles its scope. The dialog's other keys are fixed and can't be rebound: `Enter` or `Tab` places the highlighted match in the prompt input and `Esc` cancels.
213213 
214214### Task actions
215215 
from line 271
271271| `footer:down` | Down, Ctrl+N | Navigate down in footer |
272272| `footer:openSelected` | Enter | Open selected footer item |
273273| `footer:clearSelection` | Escape | Clear footer selection |
274| `footer:close` | x | Stop the selected [agent](/docs/en/sub-agents.md#observe-and-steer-running-forks) or [workflow](/docs/en/workflows.md#manage-runs), or dismiss its row if it's no longer running |
274| `footer:close` | x | Stop the selected [agent](https://code.claude.com/docs/en/sub-agents.md#observe-and-steer-running-forks) or [workflow](https://code.claude.com/docs/en/workflows.md#manage-runs), or dismiss its row if it's no longer running |
275275| `footer:dismiss` | (unbound) | Binding a key to this action has no effect, and a `keybindings.json` that names it remains valid. Before v2.1.281, Backspace and Delete were bound to it and dismissed the selected artifact link from the footer. |
276276 
277277While a footer item is selected, such as a row in the agent panel below the prompt, `Enter` opens it even when you rebind `Enter` in the `Chat` context to `chat:queueSubmit` or `chat:newline`.
from line 280
280280 
281281### Message selector actions
282282 
283In the message list of the [rewind menu](/docs/en/checkpointing.md), you move through messages and pick one with the [Select actions](#select-actions) and their default keys. Your `Select` bindings for those actions apply there too. The `MessageSelector` context has no actions or default bindings of its own. Use it to change a key for this list alone, by binding a Select action such as `select:accept` in a `MessageSelector` block.
283In the message list of the [rewind menu](https://code.claude.com/docs/en/checkpointing.md), you move through messages and pick one with the [Select actions](#select-actions) and their default keys. Your `Select` bindings for those actions apply there too. The `MessageSelector` context has no actions or default bindings of its own. Use it to change a key for this list alone, by binding a Select action such as `select:accept` in a `MessageSelector` block.
284284 
285285This example binds `o` to pick the highlighted message in the rewind menu, without changing any other list:
286286 
from line 301
301301 
302302### Diff actions
303303 
304These actions reach only Claude Code's earlier diff viewer, which `/diff` opens outside [fullscreen rendering](/docs/en/fullscreen.md) after you disable the [`cc-plugin-diff` mod](/docs/en/plugins/mods/overview#mods-built-into-claude-code) in `/plugin`. While that mod is enabled, `/diff` opens the [diff dialog](/docs/en/interactive-mode.md#diff-dialog) instead. A `keybindings.json` that names these actions loads without errors either way.
304These actions reach only Claude Code's earlier diff viewer, which `/diff` opens outside [fullscreen rendering](https://code.claude.com/docs/en/fullscreen.md) after you disable the [`cc-plugin-diff` mod](https://code.claude.com/docs/en/plugins/mods/overview#mods-built-into-claude-code) in `/plugin`. While that mod is enabled, `/diff` opens the [diff dialog](https://code.claude.com/docs/en/interactive-mode.md#diff-dialog) instead. A `keybindings.json` that names these actions loads without errors either way.
305305 
306306Actions available in the `DiffDialog` context:
307307 
from line 331
331331 
332332### Diff panel actions
333333 
334Actions for the [diff panel](/docs/en/interactive-mode.md#diff-panel) that `/diff` opens in fullscreen rendering. `app:cycleDiffBase` is in the `DiffPanel` context, which is active while the panel is open; the others are `Global`.
334Actions for the [diff panel](https://code.claude.com/docs/en/interactive-mode.md#diff-panel) that `/diff` opens in fullscreen rendering. `app:cycleDiffBase` is in the `DiffPanel` context, which is active while the panel is open; the others are `Global`.
335335 
336The built-in [`cc-plugin-diff` mod](/docs/en/plugins/mods/overview#mods-built-into-claude-code) draws this panel and handles `app:cycleDiffBase`, `app:diffFileListUp`, and `app:diffFileListDown`. `app:toggleReplTab`, `app:toggleDiffNoiseFilter`, and `app:toggleDiffPreSession` reach only Claude Code's earlier panel, which `/diff` opens after you disable `cc-plugin-diff` in `/plugin`.
336The built-in [`cc-plugin-diff` mod](https://code.claude.com/docs/en/plugins/mods/overview#mods-built-into-claude-code) draws this panel and handles `app:cycleDiffBase`, `app:diffFileListUp`, and `app:diffFileListDown`. `app:toggleReplTab`, `app:toggleDiffNoiseFilter`, and `app:toggleDiffPreSession` reach only Claude Code's earlier panel, which `/diff` opens after you disable `cc-plugin-diff` in `/plugin`.
337337 
338338| Action | Default | Description |
339339| :- | :- | :- |
from line 362
362362| :- | :- | :- |
363363| `effortSlider:decreaseEffort` | Left | Move the slider to the next lower effort level. Requires v2.1.284 or later |
364364| `effortSlider:increaseEffort` | Right | Move the slider to the next higher effort level. Requires v2.1.284 or later |
365| `effortSlider:toggleUltracode` | Tab | Turn [ultracode](/docs/en/workflows.md#let-claude-decide-with-ultracode) on or off for this session, when the slider [offers it](/docs/en/model-config.md#when-ultracode-is-available). Requires v2.1.284 or later |
366| `effortSlider:thisSessionOnly` | s | Apply the focused [effort level](/docs/en/model-config.md#adjust-effort-level) to this session only. Requires v2.1.257 or later |
365| `effortSlider:toggleUltracode` | Tab | Turn [ultracode](https://code.claude.com/docs/en/workflows.md#let-claude-decide-with-ultracode) on or off for this session, when the slider [offers it](https://code.claude.com/docs/en/model-config.md#when-ultracode-is-available). Requires v2.1.284 or later |
366| `effortSlider:thisSessionOnly` | s | Apply the focused [effort level](https://code.claude.com/docs/en/model-config.md#adjust-effort-level) to this session only. Requires v2.1.257 or later |
367367 
368368### Select actions
369369 
from line 398
398398 
399399### Above-prompt actions
400400 
401Actions for the band above the prompt, the shared strip where [mods](/docs/en/plugins/mods/interface.md#pick-where-to-draw) draw buttons, input fields, and selects. `abovePrompt:toggle` and `abovePrompt:focus` apply in the `Chat` context. The other actions apply in the [context](#contexts) of whatever has keyboard focus in the band or a pane.
401Actions for the band above the prompt, the shared strip where [mods](https://code.claude.com/docs/en/plugins/mods/interface.md#pick-where-to-draw) draw buttons, input fields, and selects. `abovePrompt:toggle` and `abovePrompt:focus` apply in the `Chat` context. The other actions apply in the [context](#contexts) of whatever has keyboard focus in the band or a pane.
402402 
403403| Action | Default | Description |
404404| :- | :- | :- |
from line 417
417417 
418418### Pane actions
419419 
420Actions for a pane drawn by a [mod](/docs/en/plugins/mods/interface.md#know-which-keys-your-mod-can-receive). The scroll, resize, and close actions apply in the `Pane` [context](#contexts). `pane:close` also applies in the `PaneField` context, so it works while one of the pane's fields has focus. `pane:next` and `pane:previous` apply in the `Global` context while more than one pane is open.
420Actions for a pane drawn by a [mod](https://code.claude.com/docs/en/plugins/mods/interface.md#know-which-keys-your-mod-can-receive). The scroll, resize, and close actions apply in the `Pane` [context](#contexts). `pane:close` also applies in the `PaneField` context, so it works while one of the pane's fields has focus. `pane:next` and `pane:previous` apply in the `Global` context while more than one pane is open.
421421 
422422| Action | Default | Description |
423423| :- | :- | :- |
from line 433
433433| `pane:next` | (unbound) | Show the next open pane |
434434| `pane:previous` | (unbound) | Show the previous open pane |
435435 
436The `Pane` context also binds Tab, Shift+Tab, Enter, and Escape to the same [above-prompt actions](#above-prompt-actions) as the band, and a pane's input fields and selects use the `AbovePromptInput` and `AbovePromptSelect` contexts. [Keyboard focus and hotkeys](/docs/en/plugins/mods/interface.md#know-which-keys-your-mod-can-receive) lists what each key does in a pane.
436The `Pane` context also binds Tab, Shift+Tab, Enter, and Escape to the same [above-prompt actions](#above-prompt-actions) as the band, and a pane's input fields and selects use the `AbovePromptInput` and `AbovePromptSelect` contexts. [Keyboard focus and hotkeys](https://code.claude.com/docs/en/plugins/mods/interface.md#know-which-keys-your-mod-can-receive) lists what each key does in a pane.
437437 
438438### Settings actions
439439 
from line 443
443443| :- | :- | :- |
444444| `settings:search` | / | Enter search mode |
445445| `settings:retry` | R | Retry loading usage data on error |
446| `settings:fixUsage` | F | Send your session the [`/usage` recommendations](/docs/en/costs#apply-recommendations-with-the-fix-shortcut) Claude Code can apply, when the `/usage` footer offers a fix. Requires v2.1.305 or later |
446| `settings:fixUsage` | F | Send your session the [`/usage` recommendations](https://code.claude.com/docs/en/costs#apply-recommendations-with-the-fix-shortcut) Claude Code can apply, when the `/usage` footer offers a fix. Requires v2.1.305 or later |
447447| `select:accept` | Enter, Space | Change the selected setting or open its submenu |
448448| `confirm:no` | Escape | Close the panel. Changes are already saved |
449449 
450450### Agents actions
451451 
452Actions available in the `Agents` context, which applies in [agent view](/docs/en/agent-view.md), opened with `claude agents`. Requires v2.1.257 or later.
452Actions available in the `Agents` context, which applies in [agent view](https://code.claude.com/docs/en/agent-view.md), opened with `claude agents`. Requires v2.1.257 or later.
453453 
454454| Action | Default | Description |
455455| :- | :- | :- |
456| `agents:switchView` | Ctrl+S | Switch [session grouping](/docs/en/agent-view.md#organize-the-list) between state and directory |
457| `agents:togglePin` | Ctrl+T | [Pin or unpin](/docs/en/agent-view.md#organize-the-list) the selected session |
458| `agents:find` | Ctrl+F | Find sessions by name, with the [`n:` filter](/docs/en/agent-view#filter-sessions). Requires v2.1.288 or later |
459| `agents:rename` | Ctrl+R | [Rename](/docs/en/agent-view.md#organize-the-list) the selected session. Requires v2.1.288 or later |
460| `agents:previousGroup` | Ctrl+Up, Meta+Up | Jump to the previous [group header](/docs/en/agent-view.md#organize-the-list). Requires v2.1.288 or later |
456| `agents:switchView` | Ctrl+S | Switch [session grouping](https://code.claude.com/docs/en/agent-view.md#organize-the-list) between state and directory |
457| `agents:togglePin` | Ctrl+T | [Pin or unpin](https://code.claude.com/docs/en/agent-view.md#organize-the-list) the selected session |
458| `agents:find` | Ctrl+F | Find sessions by name, with the [`n:` filter](https://code.claude.com/docs/en/agent-view#filter-sessions). Requires v2.1.288 or later |
459| `agents:rename` | Ctrl+R | [Rename](https://code.claude.com/docs/en/agent-view.md#organize-the-list) the selected session. Requires v2.1.288 or later |
460| `agents:previousGroup` | Ctrl+Up, Meta+Up | Jump to the previous [group header](https://code.claude.com/docs/en/agent-view.md#organize-the-list). Requires v2.1.288 or later |
461461| `agents:nextGroup` | Ctrl+Down, Meta+Down | Jump to the next group header. Requires v2.1.288 or later |
462462 
463463While agent view is open, Claude Code uses the `Agents` binding for any key the `Agents` context binds, and it ignores a `Chat` or `Global` binding on the same key. For example, pressing Ctrl+S in agent view switches the session grouping rather than triggering the default `chat:stash`.
from line 468
468468 
469469### Voice actions
470470 
471Actions available in the `Chat` context when [voice dictation](/docs/en/voice-dictation.md) is enabled:
471Actions available in the `Chat` context when [voice dictation](https://code.claude.com/docs/en/voice-dictation.md) is enabled:
472472 
473473| Action | Default | Description |
474474| :- | :- | :- |
from line 476
476476 
477477### Scroll actions
478478 
479Actions available in the `Scroll` context when [fullscreen rendering](/docs/en/fullscreen.md) is enabled:
479Actions available in the `Scroll` context when [fullscreen rendering](https://code.claude.com/docs/en/fullscreen.md) is enabled:
480480 
481481| Action | Default | Description |
482482| :- | :- | :- |
from line 647
647647| Ctrl+M | Claude Code always receives it as Enter |
648648| Ctrl+\[ | Claude Code always receives it as Escape. In terminals that use the Kitty keyboard protocol, this requires v2.1.242 or later |
649649| Ctrl+I | Claude Code always receives it as Tab |
650| Ctrl+H | Sends the ASCII backspace byte. [How Claude Code reads it on Windows](/docs/en/terminal-config.md#fix-backspace-deleting-a-whole-word-on-windows) depends on your terminal and the [`CLAUDE_CODE_BS_AS_CTRL_BACKSPACE`](/docs/en/env-vars) environment variable |
650| Ctrl+H | Sends the ASCII backspace byte. [How Claude Code reads it on Windows](https://code.claude.com/docs/en/terminal-config.md#fix-backspace-deleting-a-whole-word-on-windows) depends on your terminal and the [`CLAUDE_CODE_BS_AS_CTRL_BACKSPACE`](https://code.claude.com/docs/en/env-vars) environment variable |
651651| Caps Lock | Not delivered to terminal applications |
652652 
653653## Terminal conflicts
from line 680
680680* **Keybindings** handle actions at the component level (toggle todos, submit, etc.)
681681* The Escape key in vim mode switches INSERT to NORMAL mode; it does not trigger `chat:cancel`
682682* Most Ctrl+key shortcuts pass through vim mode to the keybinding system
683* Vim keys aren't remappable through the keybindings file. To map a two-key INSERT-mode sequence such as `jj` to Escape, use the [`vimInsertModeRemaps`](/docs/en/interactive-mode#remap-insert-mode-key-sequences) setting
683* Vim keys aren't remappable through the keybindings file. To map a two-key INSERT-mode sequence such as `jj` to Escape, use the [`vimInsertModeRemaps`](https://code.claude.com/docs/en/interactive-mode#remap-insert-mode-key-sequences) setting
684684* In vim NORMAL mode, `?` shows the help menu (vim behavior)
685685* In vim NORMAL mode, `/` opens history search, the same as Ctrl+R in standard mode
686686 
687In the `Other` row of a question Claude asks, Escape doesn't cancel the question right away in vim mode. Except in [screen reader mode](/docs/en/accessibility.md), the row starts in INSERT mode each time you focus it. When you press Escape in the `Other` row, the row switches to NORMAL mode or drops a half-typed vim command, and the question stays open. Press Escape again in NORMAL mode to cancel the question.
687In the `Other` row of a question Claude asks, Escape doesn't cancel the question right away in vim mode. Except in [screen reader mode](https://code.claude.com/docs/en/accessibility.md), the row starts in INSERT mode each time you focus it. When you press Escape in the `Other` row, the row switches to NORMAL mode or drops a half-typed vim command, and the question stays open. Press Escape again in NORMAL mode to cancel the question.
688688 
689689### Cancel a question with one key press
690690 
691To cancel a question with one key press in vim mode, bind another key to `select:cancel` in the `Select` context. You can cancel this way from the `Other` row of a question where you select one option. In [screen reader mode](/docs/en/accessibility.md) or in a question where you can select several options, the bound key doesn't cancel, so cancel with Escape instead.
691To cancel a question with one key press in vim mode, bind another key to `select:cancel` in the `Select` context. You can cancel this way from the `Other` row of a question where you select one option. In [screen reader mode](https://code.claude.com/docs/en/accessibility.md) or in a question where you can select several options, the bound key doesn't cancel, so cancel with Escape instead.
692692 
693693Pick a key that you press with Ctrl or Alt. A bare letter or digit [goes to the `Other` row](#text-fields) instead and doesn't reach your bindings. For example, to bind `Ctrl+Q`, add this to `~/.claude/keybindings.json`:
694694 
from line 720
720720* Reserved shortcut conflicts
721721* Duplicate bindings in the same context
722722 
723Start Claude Code with [`--debug`](/docs/en/cli-reference#cli-flags) to see the details.
723Start Claude Code with [`--debug`](https://code.claude.com/docs/en/cli-reference#cli-flags) to see the details.
724724 
Feedback