Interactive mode changedinteractive-mode
Nearest release: v2.1.284, published under an hour 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 28 Sep 2026 17:53 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 28 Sep 2026 23:37 UTC.
Upstream edited
Recorded here
Lines+150added
Lines−150removed
From line
12
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits46to this page, all time
The whole hunk
from line 12, old and new numbered
/
from line 12
1212
1313### General controls
1414
15| Shortcut | Description | Context |
16| :------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
17| `Ctrl+C` | Interrupt, or clear input | Interrupts a running operation. If nothing is running, the first press clears the prompt input and a second press exits Claude Code |
18| `Ctrl+X Ctrl+K` | Stop all running [background subagents](/docs/en/sub-agents#run-subagents-in-foreground-or-background) in this session, and turn off [artifact auto-replies](/docs/en/artifacts#let-claude-reply-to-comments-on-its-own) for the rest of it. Press twice within 3 seconds to confirm | Subagent control |
19| `Ctrl+D` | Exit Claude Code session | The first press shows a confirmation hint and a second press within 800ms exits. When the prompt has text, `Ctrl+D` deletes the character after the cursor instead |
20| `Ctrl+G` or `Ctrl+X Ctrl+E` | Open in default text editor | Edit your prompt or custom response in your default text editor. `Ctrl+X Ctrl+E` is the readline-native binding. Turn on **Show last response in external editor** in `/config` to prepend Claude's previous reply as `#`-commented context above your prompt; Claude Code strips the comment block when you save |
21| `Ctrl+L` | Redraw the screen | Forces a full terminal redraw, keeping input and conversation history. Use this to recover if the display becomes garbled or partially blank. See [Clear the conversation](/docs/en/fullscreen#clear-the-conversation) for fullscreen rendering |
22| `Ctrl+O` | Toggle transcript viewer | Shows detailed tool usage and execution, with a timestamp and the model used on each assistant message. Also expands lines that collapse by default, such as MCP calls, shown as a single `Called slack 3 times` line, and [messages from your other sessions](/docs/en/cross-session-messaging#what-a-message-looks-like), shown as a one-line `Message from @<sender>` preview |
23| `Ctrl+R` | Reverse search command history | Search through previous commands interactively |
24| `Ctrl+V` or `Cmd+V` (iTerm2) or `Alt+V` (Windows and WSL) | Paste image from clipboard | Inserts an `[Image #N]` chip at the cursor so you can reference it positionally in your prompt. On WSL, both `Ctrl+V` and `Alt+V` are bound; use `Alt+V` if your terminal intercepts `Ctrl+V` |
25| `Ctrl+B` | Background running tasks | Backgrounds Bash commands and agents. Tmux users press twice |
26| `Ctrl+T` | Toggle Claude's task checklist | Show or hide [Claude's to-do checklist](#task-list) in the status area. This is not the background-task view; use [`/tasks`](/docs/en/commands) to see running shells and subagents |
27| `Ctrl+S` | Stash or restore prompt | With text in the input, stashes it and clears the prompt. Pressed again on an empty prompt, restores the stashed text, cursor position, pasted content, and input mode, so a stashed `!` [shell command](#shell-mode-with-prefix) comes back in shell mode |
28| `Ctrl+Z` | Suspend Claude Code | Unix only. Suspends the process to your shell; run `fg` to resume |
29| `Left/Right arrows` | Cycle through dialog tabs | Navigate between tabs in permission dialogs and menus. In a tabbed dialog, the keys switch tabs while the tab row has focus. See [Tabs actions](/docs/en/keybindings#tabs-actions) for how focus moves |
30| `Tab` | Accept an autocomplete suggestion, or add a comment to a permission answer | While autocomplete suggestions are showing in the prompt input, accepts the selected suggestion. On most permission prompts, with **Yes** or **No** focused, opens a comment field on that option, and pressing it again closes the field. See [add a comment when you answer a permission prompt](/docs/en/permissions#add-a-comment-when-you-answer-a-permission-prompt) |
31| `Up/Down arrows` or `Ctrl+P`/`Ctrl+N` | Move cursor or navigate command history | When the input spans more than one visual row, whether wrapped or multiline, first moves the cursor within the prompt. Once the cursor is on the first or last visual row, pressing again navigates command history. While you have messages queued, `Up` from the first row instead [takes them back](#take-back-what-you-queued) |
32| `Esc` | Interrupt Claude, or close a dialog | Stop the current response or tool call mid-turn so you can redirect. Claude keeps the work done so far. If you have [messages queued](#queue-messages-while-claude-works), Claude Code sends them next. When a dialog is open, `Esc` closes the dialog. While a footer item is selected, such as a row in the [subagent panel](/docs/en/sub-agents#run-subagents-in-foreground-or-background) below the prompt, `Esc` [deselects it](/docs/en/keybindings#footer-actions) instead of interrupting. On a permission prompt, `Esc` declines the action, the same as [**No** without a comment](/docs/en/permissions#add-a-comment-when-you-answer-a-permission-prompt) |
33| `Esc` + `Esc` | Clear input draft, or rewind | When the prompt input contains text, double `Esc` clears it and saves the draft to history so `Up` recalls it. When the input is empty, double `Esc` opens the [rewind menu](/docs/en/checkpointing) to restore or summarize code and conversation from a previous point |
34| `Ctrl+Enter` or `Ctrl+X Ctrl+S` | Send queued messages now | Sends your [queued messages](#queue-messages-while-claude-works), and your draft with them, right away. [When Claude Code sends what you queued](#when-claude-code-sends-what-you-queued) covers what happens to the turn Claude is working on. In [shell mode](#shell-mode-with-prefix), the key only queues your command. In terminals that don't report extended keys, `Ctrl+Enter` arrives as plain `Enter`; `Ctrl+X Ctrl+S` works in any terminal. Requires Claude Code v2.1.275 or later |
35| `Shift+Tab`, or `Alt+M` on Windows when the Node or Bun runtime doesn't enable VT input mode | Cycle permission modes | Cycle through `default` (labeled Manual in the mode indicator), `acceptEdits`, `plan`, and, when available, `bypassPermissions` and then `auto`. From `auto`, the first press switches to `default`. See [permission modes](/docs/en/permission-modes). On a file permission prompt, the same key closes an open [comment field](/docs/en/permissions#add-a-comment-when-you-answer-a-permission-prompt). With no field open, it selects the option that allows the action for the rest of the session, when the prompt offers that option |
36| `Option+P` (macOS) or `Alt+P` (Windows/Linux) | Switch model | Switch models without clearing your prompt |
37| `Option+T` (macOS) or `Alt+T` (Windows/Linux) | Toggle extended thinking | Enable or disable extended thinking mode. Has no effect on Opus 5.5, Sonnet 5.5, or the Fable models, which always use extended thinking. Works on macOS without configuring Option as Meta |
38| `Option+O` (macOS) or `Alt+O` (Windows/Linux) | Toggle fast mode | Enable or disable [fast mode](/docs/en/fast-mode) |
15| Shortcut | Description | Context |
16| :- | :- | :- |
17| `Ctrl+C` | Interrupt, or clear input | Interrupts a running operation. If nothing is running, the first press clears the prompt input and a second press exits Claude Code |
18| `Ctrl+X Ctrl+K` | Stop all running [background subagents](/docs/en/sub-agents#run-subagents-in-foreground-or-background) in this session, and turn off [artifact auto-replies](/docs/en/artifacts#let-claude-reply-to-comments-on-its-own) for the rest of it. Press twice within 3 seconds to confirm | Subagent control |
19| `Ctrl+D` | Exit Claude Code session | The first press shows a confirmation hint and a second press within 800ms exits. When the prompt has text, `Ctrl+D` deletes the character after the cursor instead |
20| `Ctrl+G` or `Ctrl+X Ctrl+E` | Open in default text editor | Edit your prompt or custom response in your default text editor. `Ctrl+X Ctrl+E` is the readline-native binding. Turn on **Show last response in external editor** in `/config` to prepend Claude's previous reply as `#`-commented context above your prompt; Claude Code strips the comment block when you save |
21| `Ctrl+L` | Redraw the screen | Forces a full terminal redraw, keeping input and conversation history. Use this to recover if the display becomes garbled or partially blank. See [Clear the conversation](/docs/en/fullscreen#clear-the-conversation) for fullscreen rendering |
22| `Ctrl+O` | Toggle transcript viewer | Shows detailed tool usage and execution, with a timestamp and the model used on each assistant message. Also expands lines that collapse by default, such as MCP calls, shown as a single `Called slack 3 times` line, and [messages from your other sessions](/docs/en/cross-session-messaging#what-a-message-looks-like), shown as a one-line `Message from @<sender>` preview |
23| `Ctrl+R` | Reverse search command history | Search through previous commands interactively |
24| `Ctrl+V` or `Cmd+V` (iTerm2) or `Alt+V` (Windows and WSL) | Paste image from clipboard | Inserts an `[Image #N]` chip at the cursor so you can reference it positionally in your prompt. On WSL, both `Ctrl+V` and `Alt+V` are bound; use `Alt+V` if your terminal intercepts `Ctrl+V` |
25| `Ctrl+B` | Background running tasks | Backgrounds Bash commands and agents. Tmux users press twice |
26| `Ctrl+T` | Toggle Claude's task checklist | Show or hide [Claude's to-do checklist](#task-list) in the status area. This is not the background-task view; use [`/tasks`](/docs/en/commands) to see running shells and subagents |
27| `Ctrl+S` | Stash or restore prompt | With text in the input, stashes it and clears the prompt. Pressed again on an empty prompt, restores the stashed text, cursor position, pasted content, and input mode, so a stashed `!` [shell command](#shell-mode-with-prefix) comes back in shell mode |
28| `Ctrl+Z` | Suspend Claude Code | Unix only. Suspends the process to your shell; run `fg` to resume |
29| `Left/Right arrows` | Cycle through dialog tabs | Navigate between tabs in permission dialogs and menus. In a tabbed dialog, the keys switch tabs while the tab row has focus. See [Tabs actions](/docs/en/keybindings#tabs-actions) for how focus moves |
30| `Tab` | Accept an autocomplete suggestion, or add a comment to a permission answer | While autocomplete suggestions are showing in the prompt input, accepts the selected suggestion. On most permission prompts, with **Yes** or **No** focused, opens a comment field on that option, and pressing it again closes the field. See [add a comment when you answer a permission prompt](/docs/en/permissions#add-a-comment-when-you-answer-a-permission-prompt) |
31| `Up/Down arrows` or `Ctrl+P`/`Ctrl+N` | Move cursor or navigate command history | When the input spans more than one visual row, whether wrapped or multiline, first moves the cursor within the prompt. Once the cursor is on the first or last visual row, pressing again navigates command history. While you have messages queued, `Up` from the first row instead [takes them back](#take-back-what-you-queued) |
32| `Esc` | Interrupt Claude, or close a dialog | Stop the current response or tool call mid-turn so you can redirect. Claude keeps the work done so far. If you have [messages queued](#queue-messages-while-claude-works), Claude Code sends them next. When a dialog is open, `Esc` closes the dialog. While a footer item is selected, such as a row in the [subagent panel](/docs/en/sub-agents#run-subagents-in-foreground-or-background) below the prompt, `Esc` [deselects it](/docs/en/keybindings#footer-actions) instead of interrupting. On a permission prompt, `Esc` declines the action, the same as [**No** without a comment](/docs/en/permissions#add-a-comment-when-you-answer-a-permission-prompt) |
33| `Esc` + `Esc` | Clear input draft, or rewind | When the prompt input contains text, double `Esc` clears it and saves the draft to history so `Up` recalls it. When the input is empty, double `Esc` opens the [rewind menu](/docs/en/checkpointing) to restore or summarize code and conversation from a previous point |
34| `Ctrl+Enter` or `Ctrl+X Ctrl+S` | Send queued messages now | Sends your [queued messages](#queue-messages-while-claude-works), and your draft with them, right away. [When Claude Code sends what you queued](#when-claude-code-sends-what-you-queued) covers what happens to the turn Claude is working on. In [shell mode](#shell-mode-with-prefix), the key only queues your command. In terminals that don't report extended keys, `Ctrl+Enter` arrives as plain `Enter`; `Ctrl+X Ctrl+S` works in any terminal. Requires Claude Code v2.1.275 or later |
35| `Shift+Tab`, or `Alt+M` on Windows when the Node or Bun runtime doesn't enable VT input mode | Cycle permission modes | Cycle through `default` (labeled Manual in the mode indicator), `acceptEdits`, `plan`, and, when available, `bypassPermissions` and then `auto`. From `auto`, the first press switches to `default`. See [permission modes](/docs/en/permission-modes). On a file permission prompt, the same key closes an open [comment field](/docs/en/permissions#add-a-comment-when-you-answer-a-permission-prompt). With no field open, it selects the option that allows the action for the rest of the session, when the prompt offers that option |
36| `Option+P` (macOS) or `Alt+P` (Windows/Linux) | Switch model | Switch models without clearing your prompt |
37| `Option+T` (macOS) or `Alt+T` (Windows/Linux) | Toggle extended thinking | Enable or disable extended thinking mode. Has no effect on Opus 5.5, Sonnet 5.5, or the Fable models, which always use extended thinking. Works on macOS without configuring Option as Meta |
38| `Option+O` (macOS) or `Alt+O` (Windows/Linux) | Toggle fast mode | Enable or disable [fast mode](/docs/en/fast-mode) |
3939
4040### Text editing
4141
42| Shortcut | Description | Context |
43| :------------------------- | :----------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
44| `Ctrl+A` | Move cursor to start of current line | In multiline input, moves to the start of the current logical line |
45| `Ctrl+E` | Move cursor to end of current line | In multiline input, moves to the end of the current logical line |
46| `Ctrl+K` | Delete to end of line | Stores deleted text for pasting |
47| `Ctrl+U` | Delete from cursor to line start | Stores deleted text for pasting. Repeat to clear across lines in multiline input. On macOS, terminal emulators including iTerm2 and Terminal.app map `Cmd+Backspace` to this shortcut |
48| `Ctrl+W` | Delete back to previous whitespace | Stores deleted text for pasting. One press removes a whole path or `--flag=value`. To delete only the previous word, press `Option+Delete` on macOS or `Ctrl+Backspace` on Windows |
49| `Ctrl+Y` | Paste deleted text | Pastes the text you last deleted with one of the word or line deletion shortcuts, such as `Ctrl+K`, `Ctrl+U`, or `Ctrl+W` |
50| `Alt+Y` (after `Ctrl+Y`) | Cycle paste history | After pasting, cycle through previously deleted text. Requires [Option as Meta](#keyboard-shortcuts) on macOS |
51| `Alt+B` | Move cursor back one word | Word navigation. Requires [Option as Meta](#keyboard-shortcuts) on macOS |
52| `Alt+F` | Move cursor forward one word | Moves to the end of the current word, or to the end of the next word when the cursor is between words. Requires [Option as Meta](#keyboard-shortcuts) on macOS |
53| `Alt+D` | Delete to end of word | Deletes to the end of the current word, or to the end of the next word when the cursor is between words. Stores deleted text for pasting. Requires [Option as Meta](#keyboard-shortcuts) on macOS |
54| `Ctrl+_` or `Ctrl+Shift+-` | Undo last input edit | Restores the previous input text and cursor position |
42| Shortcut | Description | Context |
43| :- | :- | :- |
44| `Ctrl+A` | Move cursor to start of current line | In multiline input, moves to the start of the current logical line |
45| `Ctrl+E` | Move cursor to end of current line | In multiline input, moves to the end of the current logical line |
46| `Ctrl+K` | Delete to end of line | Stores deleted text for pasting |
47| `Ctrl+U` | Delete from cursor to line start | Stores deleted text for pasting. Repeat to clear across lines in multiline input. On macOS, terminal emulators including iTerm2 and Terminal.app map `Cmd+Backspace` to this shortcut |
48| `Ctrl+W` | Delete back to previous whitespace | Stores deleted text for pasting. One press removes a whole path or `--flag=value`. To delete only the previous word, press `Option+Delete` on macOS or `Ctrl+Backspace` on Windows |
49| `Ctrl+Y` | Paste deleted text | Pastes the text you last deleted with one of the word or line deletion shortcuts, such as `Ctrl+K`, `Ctrl+U`, or `Ctrl+W` |
50| `Alt+Y` (after `Ctrl+Y`) | Cycle paste history | After pasting, cycle through previously deleted text. Requires [Option as Meta](#keyboard-shortcuts) on macOS |
51| `Alt+B` | Move cursor back one word | Word navigation. Requires [Option as Meta](#keyboard-shortcuts) on macOS |
52| `Alt+F` | Move cursor forward one word | Moves to the end of the current word, or to the end of the next word when the cursor is between words. Requires [Option as Meta](#keyboard-shortcuts) on macOS |
53| `Alt+D` | Delete to end of word | Deletes to the end of the current word, or to the end of the next word when the cursor is between words. Stores deleted text for pasting. Requires [Option as Meta](#keyboard-shortcuts) on macOS |
54| `Ctrl+_` or `Ctrl+Shift+-` | Undo last input edit | Restores the previous input text and cursor position |
5555
5656<h3 id="make-ctrl-w-delete-back-to-whitespace">
5757 Word boundaries in editing shortcuts
from line 69
6969
7070### Theme and display
7171
72| Shortcut | Description | Context |
73| :------- | :----------------------------------------- | :----------------------------------------------------------------------------------------------------------- |
72| Shortcut | Description | Context |
73| :- | :- | :- |
7474| `Ctrl+T` | Toggle syntax highlighting for code blocks | Only works inside the `/theme` picker menu. Controls whether code in Claude's responses uses syntax coloring |
7575
7676### Multiline input
7777
78| Method | Shortcut | Context |
79| :--------------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
80| Quick escape | `\` + `Enter` | Works in all terminals |
81| Option key | `Option+Enter` | After enabling [Option as Meta](/docs/en/terminal-config#enable-option-key-shortcuts-on-macos) on macOS |
82| Shift+Enter | `Shift+Enter` | Native in iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal, Windows Terminal. For other terminals, see [Enter multiline prompts](/docs/en/terminal-config#enter-multiline-prompts) |
83| Control sequence | `Ctrl+J` | Works in any terminal without configuration |
84| Paste mode | Paste directly | For code blocks, logs |
78| Method | Shortcut | Context |
79| :- | :- | :- |
80| Quick escape | `\` + `Enter` | Works in all terminals |
81| Option key | `Option+Enter` | After enabling [Option as Meta](/docs/en/terminal-config#enable-option-key-shortcuts-on-macos) on macOS |
82| Shift+Enter | `Shift+Enter` | Native in iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal, Windows Terminal. For other terminals, see [Enter multiline prompts](/docs/en/terminal-config#enter-multiline-prompts) |
83| Control sequence | `Ctrl+J` | Works in any terminal without configuration |
84| Paste mode | Paste directly | For code blocks, logs |
8585
8686### Quick commands
8787
88| Shortcut | Description | Notes |
89| :----------------- | :----------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
90| `/` at start | Command or skill | See [commands](#commands) and [skills](/docs/en/skills) |
91| `!` at start | Shell mode | Run a command directly, add its output to the session, and have Claude respond to it |
92| `@` | File path mention | Trigger file path autocomplete. In sessions with [cross-session messaging](/docs/en/cross-session-messaging#message-another-session), when you type at least one letter after the `@`, Claude Code also suggests your other live sessions on this machine, so you can tell Claude to message the one you pick. Requires Claude Code v2.1.232 or later |
93| `:` | Emoji shortcode | Type a full `:name:` to insert the emoji, or two or more characters for suggestions. See [Emoji shortcodes](#emoji-shortcodes). Requires Claude Code v2.1.217 or later |
94| `?` on empty input | Toggle the shortcut help panel | Typing `?` when the input already contains text inserts the character |
88| Shortcut | Description | Notes |
89| :- | :- | :- |
90| `/` at start | Command or skill | See [commands](#commands) and [skills](/docs/en/skills) |
91| `!` at start | Shell mode | Run a command directly, add its output to the session, and have Claude respond to it |
92| `@` | File path mention | Trigger file path autocomplete. In sessions with [cross-session messaging](/docs/en/cross-session-messaging#message-another-session), when you type at least one letter after the `@`, Claude Code also suggests your other live sessions on this machine, so you can tell Claude to message the one you pick. Requires Claude Code v2.1.232 or later |
93| `:` | Emoji shortcode | Type a full `:name:` to insert the emoji, or two or more characters for suggestions. See [Emoji shortcodes](#emoji-shortcodes). Requires Claude Code v2.1.217 or later |
94| `?` on empty input | Toggle the shortcut help panel | Typing `?` when the input already contains text inserts the character |
9595
9696### Transcript viewer
9797
9898When the transcript viewer is open (toggled with `Ctrl+O`), these shortcuts are available. Run `/tui` with no argument to check which renderer is active. `Ctrl+E` can be rebound via [`transcript:toggleShowAll`](/docs/en/keybindings).
9999
100| Shortcut | Description |
101| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
102| `?` | Toggle the keyboard shortcut help panel. Requires [fullscreen rendering](/docs/en/fullscreen) |
103| `{` / `}` | Jump to the previous or next user prompt, like vim paragraph motion. Requires [fullscreen rendering](/docs/en/fullscreen) |
104| `Ctrl+E` | Toggle show all content. Available in the classic renderer only, not in [fullscreen rendering](/docs/en/fullscreen) |
105| `[` | Write the full conversation to your terminal's native scrollback so `Cmd+F`, tmux copy mode, and other native tools can search it. Requires [fullscreen rendering](/docs/en/fullscreen#search-and-review-the-conversation) |
106| `v` | Write the conversation to a temporary file and open it in `$VISUAL` or `$EDITOR`. Requires [fullscreen rendering](/docs/en/fullscreen) |
107| `q`, `Ctrl+C`, `Esc` | Exit transcript view. All three can be rebound via [`transcript:exit`](/docs/en/keybindings) |
100| Shortcut | Description |
101| :- | :- |
102| `?` | Toggle the keyboard shortcut help panel. Requires [fullscreen rendering](/docs/en/fullscreen) |
103| `{` / `}` | Jump to the previous or next user prompt, like vim paragraph motion. Requires [fullscreen rendering](/docs/en/fullscreen) |
104| `Ctrl+E` | Toggle show all content. Available in the classic renderer only, not in [fullscreen rendering](/docs/en/fullscreen) |
105| `[` | Write the full conversation to your terminal's native scrollback so `Cmd+F`, tmux copy mode, and other native tools can search it. Requires [fullscreen rendering](/docs/en/fullscreen#search-and-review-the-conversation) |
106| `v` | Write the conversation to a temporary file and open it in `$VISUAL` or `$EDITOR`. Requires [fullscreen rendering](/docs/en/fullscreen) |
107| `q`, `Ctrl+C`, `Esc` | Exit transcript view. All three can be rebound via [`transcript:exit`](/docs/en/keybindings) |
108108
109109### Voice input
110110
111| Shortcut | Description | Notes |
112| :------------------ | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
111| Shortcut | Description | Notes |
112| :- | :- | :- |
113113| Hold or tap `Space` | Voice dictation | Requires [voice dictation](/docs/en/voice-dictation) to be enabled. Hold to record, or run `/voice tap` for tap-to-toggle. [Rebindable](/docs/en/voice-dictation#rebind-the-dictation-key) |
114114
115115## Commands
from line 139
139139
140140### Mode switching
141141
142| Command | Action | From mode |
143| :---------------- | :-------------------------------------------------------------------------------------------------------- | :------------- |
142| Command | Action | From mode |
143| :- | :- | :- |
144144| `Esc` or `Ctrl+[` | Enter NORMAL mode. In terminals that use the Kitty keyboard protocol, `Ctrl+[` requires v2.1.242 or later | INSERT, VISUAL |
145| `i` | Insert before cursor | NORMAL |
146| `I` | Insert at beginning of line | NORMAL |
147| `a` | Insert after cursor | NORMAL |
148| `A` | Insert at end of line | NORMAL |
149| `o` | Open line below | NORMAL |
150| `O` | Open line above | NORMAL |
151| `v` | Start character-wise visual selection | NORMAL |
152| `V` | Start line-wise visual selection | NORMAL |
145| `i` | Insert before cursor | NORMAL |
146| `I` | Insert at beginning of line | NORMAL |
147| `a` | Insert after cursor | NORMAL |
148| `A` | Insert at end of line | NORMAL |
149| `o` | Open line below | NORMAL |
150| `O` | Open line above | NORMAL |
151| `v` | Start character-wise visual selection | NORMAL |
152| `V` | Start line-wise visual selection | NORMAL |
153153
154154### Remap INSERT-mode key sequences
155155
from line 172
172172
173173### Navigation (NORMAL mode)
174174
175| Command | Action |
176| :-------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |
177| `h`/`j`/`k`/`l` | Move left/down/up/right |
178| `Space` | Move right |
179| `w` | Next word |
180| `e` | End of word |
181| `b` | Previous word |
182| `0` | Beginning of line |
183| `$` | End of line |
184| `^` | First non-blank character |
185| `gg` | Beginning of input |
186| `G` | End of input |
187| `f{char}` | Jump to next occurrence of character |
188| `F{char}` | Jump to previous occurrence of character |
189| `t{char}` | Jump to just before next occurrence of character |
190| `T{char}` | Jump to just after previous occurrence of character |
191| `;` | Repeat last f/F/t/T motion |
192| `,` | Repeat last f/F/t/T motion in reverse |
193| `/` | Open reverse history search, same as `Ctrl+R`. The empty search prompt shows a hint: press `Esc` then `i` then `/` to open the command menu instead |
175| Command | Action |
176| :- | :- |
177| `h`/`j`/`k`/`l` | Move left/down/up/right |
178| `Space` | Move right |
179| `w` | Next word |
180| `e` | End of word |
181| `b` | Previous word |
182| `0` | Beginning of line |
183| `$` | End of line |
184| `^` | First non-blank character |
185| `gg` | Beginning of input |
186| `G` | End of input |
187| `f{char}` | Jump to next occurrence of character |
188| `F{char}` | Jump to previous occurrence of character |
189| `t{char}` | Jump to just before next occurrence of character |
190| `T{char}` | Jump to just after previous occurrence of character |
191| `;` | Repeat last f/F/t/T motion |
192| `,` | Repeat last f/F/t/T motion in reverse |
193| `/` | Open reverse history search, same as `Ctrl+R`. The empty search prompt shows a hint: press `Esc` then `i` then `/` to open the command menu instead |
194194
195195<Note>
196196 In vim NORMAL mode, if the cursor is at the beginning or end of input and can't move further, `j`/`k` and `↑`/`↓` navigate command history instead. `←` on an empty prompt opens [agent view](/docs/en/agent-view) from NORMAL mode as well as INSERT; before v2.1.219, `←` on an empty prompt did nothing in NORMAL mode.
from line 198
198198
199199### Editing (NORMAL mode)
200200
201| Command | Action |
202| :-------------------- | :------------------------------------------------------------------------------------------------------------------------ |
203| `x` | Delete character |
204| `r{char}` | Replace character under cursor with `{char}` |
205| `dd` | Delete line |
206| `D` | Delete to end of line |
207| `dw`/`de`/`db` | Delete word/to end/back |
208| `df{char}`/`dt{char}` | Delete to and including, or up to, the next occurrence of a character |
209| `dj`/`dk` | Delete the current line and the line below or above |
210| `dgg`/`dG` | Delete from the current line to the first or last line |
211| `d0`/`c0`/`y0` | Delete, change, or yank from the cursor back to the beginning of the line. Requires Claude Code v2.1.281 or later |
212| `cc` | Change line |
213| `C` | Change to end of line |
214| `cw`/`ce`/`cb` | Change word/to end/back |
215| `s` | Substitute character: delete the character under the cursor and enter INSERT mode. Requires Claude Code v2.1.211 or later |
216| `S` | Substitute line: clear the line and enter INSERT mode. Requires Claude Code v2.1.211 or later |
217| `yy`/`Y` | Yank (copy) line |
218| `yw`/`ye`/`yb` | Yank word/to end/back |
219| `p` | Paste after cursor |
220| `P` | Paste before cursor |
221| `>>` | Indent line |
222| `<<` | Dedent line |
223| `J` | Join lines |
224| `u` | Undo |
225| `.` | Repeat last change |
201| Command | Action |
202| :- | :- |
203| `x` | Delete character |
204| `r{char}` | Replace character under cursor with `{char}` |
205| `dd` | Delete line |
206| `D` | Delete to end of line |
207| `dw`/`de`/`db` | Delete word/to end/back |
208| `df{char}`/`dt{char}` | Delete to and including, or up to, the next occurrence of a character |
209| `dj`/`dk` | Delete the current line and the line below or above |
210| `dgg`/`dG` | Delete from the current line to the first or last line |
211| `d0`/`c0`/`y0` | Delete, change, or yank from the cursor back to the beginning of the line. Requires Claude Code v2.1.281 or later |
212| `cc` | Change line |
213| `C` | Change to end of line |
214| `cw`/`ce`/`cb` | Change word/to end/back |
215| `s` | Substitute character: delete the character under the cursor and enter INSERT mode. Requires Claude Code v2.1.211 or later |
216| `S` | Substitute line: clear the line and enter INSERT mode. Requires Claude Code v2.1.211 or later |
217| `yy`/`Y` | Yank (copy) line |
218| `yw`/`ye`/`yb` | Yank word/to end/back |
219| `p` | Paste after cursor |
220| `P` | Paste before cursor |
221| `>>` | Indent line |
222| `<<` | Dedent line |
223| `J` | Join lines |
224| `u` | Undo |
225| `.` | Repeat last change |
226226
227227### Text objects (NORMAL mode)
228228
229229Text objects work with operators like `d`, `c`, and `y`:
230230
231| Command | Action |
232| :-------- | :--------------------------------------- |
233| `iw`/`aw` | Inner/around word |
231| Command | Action |
232| :- | :- |
233| `iw`/`aw` | Inner/around word |
234234| `iW`/`aW` | Inner/around WORD (whitespace-delimited) |
235| `i"`/`a"` | Inner/around double quotes |
236| `i'`/`a'` | Inner/around single quotes |
237| `i(`/`a(` | Inner/around parentheses |
238| `i[`/`a[` | Inner/around brackets |
239| `i{`/`a{` | Inner/around braces |
235| `i"`/`a"` | Inner/around double quotes |
236| `i'`/`a'` | Inner/around single quotes |
237| `i(`/`a(` | Inner/around parentheses |
238| `i[`/`a[` | Inner/around brackets |
239| `i{`/`a{` | Inner/around braces |
240240
241241### Visual mode
242242
243243Press `v` for character-wise selection or `V` for line-wise selection. Motions extend the selection, and operators act on it directly.
244244
245| Command | Action |
246| :--------------- | :--------------------------------------------------- |
247| `d`/`x` | Delete selection |
248| `y` | Yank selection |
249| `c`/`s` | Change selection |
250| `p` | Replace selection with register contents |
251| `r{char}` | Replace every selected character with `{char}` |
252| `~`/`u`/`U` | Toggle, lowercase, or uppercase selection |
253| `>`/`<` | Indent or dedent selected lines |
254| `J` | Join selected lines |
255| `o` | Swap cursor and anchor |
256| `iw`/`aw`/`i"`/… | Select a text object |
257| `v`/`V` | Toggle between character-wise and line-wise, or exit |
245| Command | Action |
246| :- | :- |
247| `d`/`x` | Delete selection |
248| `y` | Yank selection |
249| `c`/`s` | Change selection |
250| `p` | Replace selection with register contents |
251| `r{char}` | Replace every selected character with `{char}` |
252| `~`/`u`/`U` | Toggle, lowercase, or uppercase selection |
253| `>`/`<` | Indent or dedent selected lines |
254| `J` | Join selected lines |
255| `o` | Swap cursor and anchor |
256| `iw`/`aw`/`i"`/… | Select a text object |
257| `v`/`V` | Toggle between character-wise and line-wise, or exit |
258258
259259Block-wise visual mode with `Ctrl+V` is not supported.
260260
from line 611
611611
612612Once the answer appears, the overlay accepts these keys.
613613
614| Key | Action |
615| :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
616| `Space`, `Enter`, `Escape` | Dismiss the answer and return to the prompt |
617| `Up` / `Down` | Scroll the answer |
614| Key | Action |
615| :- | :- |
616| `Space`, `Enter`, `Escape` | Dismiss the answer and return to the prompt |
617| `Up` / `Down` | Scroll the answer |
618618| `Shift+Left` / `Shift+Right` | Step between this answer and your earlier `/btw` answers. `Shift+Left` moves to older answers and `Shift+Right` returns toward the current one. `[` and `]` do the same, for terminals that don't report `Shift` with arrow keys. `Tab` / `Shift+Tab` cycle through the same answers. Requires Claude Code v2.1.257 or later. Between v2.1.187 and v2.1.256, the keys were plain `Left` / `Right` |
619| `c` | Copy the answer to your clipboard as raw Markdown. Use this instead of mouse selection, which captures the hard-wrapped terminal rendering rather than the source text |
620| `f` | Start a [forked subagent](/docs/en/sub-agents#fork-the-current-conversation) that inherits the parent conversation plus this question and answer, so it can continue with full tool access. You stay in the current session and find the fork in the [panel below your prompt](/docs/en/sub-agents#observe-and-steer-running-forks). Available in local sessions only |
621| `x` | Clear the list of earlier `/btw` exchanges shown above the current answer |
619| `c` | Copy the answer to your clipboard as raw Markdown. Use this instead of mouse selection, which captures the hard-wrapped terminal rendering rather than the source text |
620| `f` | Start a [forked subagent](/docs/en/sub-agents#fork-the-current-conversation) that inherits the parent conversation plus this question and answer, so it can continue with full tool access. You stay in the current session and find the fork in the [panel below your prompt](/docs/en/sub-agents#observe-and-steer-running-forks). Available in local sessions only |
621| `x` | Clear the list of earlier `/btw` exchanges shown above the current answer |
622622
623623In an attached [background session](/docs/en/agent-view#attach-to-a-session), `Left` detaches and returns you to agent view, even while the answer is still arriving. The side question keeps running while you're away. The next time you attach to the session, the overlay reopens with the side question, or with its answer. Before v2.1.257, `Left` didn't detach there.
624624
from line 755
755755
756756Claude Code builds the link for the host of the repository it identifies from your git remote, not for the repository the reference names:
757757
758| Your repository's host | Where `owner/repo#123` links |
759| :----------------------------------------------------------------- | :------------------------------------------- |
760| github.com, a GitHub Enterprise host, or any host not listed below | `https://<host>/owner/repo/issues/123` |
761| gitlab.com | `https://gitlab.com/owner/repo/-/issues/123` |
762| bitbucket.org, codeberg.org, or gitea.com | No link; the reference stays plain text |
758| Your repository's host | Where `owner/repo#123` links |
759| :- | :- |
760| github.com, a GitHub Enterprise host, or any host not listed below | `https://<host>/owner/repo/issues/123` |
761| gitlab.com | `https://gitlab.com/owner/repo/-/issues/123` |
762| bitbucket.org, codeberg.org, or gitea.com | No link; the reference stays plain text |
763763
764764## See also
765765
No line in this hunk matches that.