qwen-code/docs/users/reference/keyboard-shortcuts.md
ZevGit ad1b5f3de1
fix(cli): default to virtualized terminal history (#5738)
* fix(cli): default to virtualized terminal history

* fix(cli): remove redundant alternate screen exit handler

* fix(cli): keep non-interactive output off VP mode

* fix(cli): stabilize VP tests in CI environments

* test(cli): resolve SDK daemon source in vitest

* fix(cli): normalize CI env checks for VP mode

* fix(cli): keep default VP mouse interactions enabled

* fix(cli): align VP mouse behavior with runtime state

* fix(cli): stabilize virtual viewport runtime state

* test(cli): cover virtual viewport fallbacks

* docs(cli): clarify virtual viewport requirements

---------

Co-authored-by: Shaojin Wen <shaojin.wensj@alibaba-inc.com>
Co-authored-by: qwen-code-dev-bot <qwen-code-dev-bot@users.noreply.github.com>
2026-07-28 12:51:55 +00:00

14 KiB

Qwen Code Keyboard Shortcuts

This document lists the available keyboard shortcuts in Qwen Code.

General

Shortcut Description
Esc Close dialogs and suggestions.
Ctrl+C Cancel the ongoing request and clear the input. Press twice to exit the application.
Ctrl+D Exit the application if the input is empty. Press twice to confirm.
Ctrl+L Clear the screen.
Ctrl+O Open/close the full-detail transcript view (a scrollable, frozen snapshot showing every tool's complete output and full thinking). Press again, or Esc/q, to close.
Ctrl+S Stashes non-empty input for the current project and restores it on the next launch. With empty input, allows long responses to print fully, disabling truncation. Use your terminal's scrollback to view the entire output.
Ctrl+T Toggle the display of tool descriptions.
Ctrl+B While a foreground shell command is running: promote it to a background task. The child keeps running, the agent's turn unblocks, and the shell appears in /tasks + the Background tasks dialog. No-op when no shell is executing — Ctrl+B then falls through to its prompt-area binding (cursor-left).
Alt/Option+M Toggle Markdown output between rich rendered previews and raw/source mode. On macOS, the terminal must send Option as Meta.
Shift+Tab (Tab on Windows) Cycle approval modes (plandefaultauto-editautoyolo)

Input Prompt

Shortcut Description
! Toggle shell mode when the input is empty.
? Toggle keyboard shortcuts display when the input is empty.
Ctrl+Enter / Cmd+Enter / Shift+Enter / Ctrl+J Insert a newline.
Down Arrow Row down, then snap to end, then history next.
Enter Submit the current prompt.
Meta+Delete / Ctrl+Delete Delete the word to the right of the cursor.
Tab Autocomplete the current suggestion if one exists.
Up Arrow Row up, then snap to start, then history prev.
Ctrl+A / Home Move the cursor to the beginning of the line.
Ctrl+B / Left Arrow Move the cursor one character to the left.
Ctrl+C Clear the input prompt
Esc (double press) Clear the input prompt.
Ctrl+D / Delete Delete the character to the right of the cursor.
Ctrl+E / End Move the cursor to the end of the line.
Ctrl+F / Right Arrow Move the cursor one character to the right.
Ctrl+H / Backspace Delete the character to the left of the cursor.
Ctrl+K Delete from the cursor to the end of the line.
Ctrl+Left Arrow / Meta+Left Arrow / Meta+B Move the cursor one word to the left.
Ctrl+N Row down, then snap to end, then history next.
Ctrl+P Row up, then snap to start, then history prev.
Ctrl+R Reverse search through input/shell history.
Ctrl+Y Retry the last failed request.
Ctrl+Right Arrow / Meta+Right Arrow / Meta+F Move the cursor one word to the right.
Ctrl+U Delete from the cursor to the beginning of the line.
Ctrl+V (Windows: Alt+V) Paste clipboard content. If the clipboard contains an image, it will be saved and a reference to it will be inserted in the prompt.
Ctrl+W / Meta+Backspace / Ctrl+Backspace Delete the word to the left of the cursor.
Ctrl+X Open the current input in an external editor.

Suggestions

Shortcut Description
Down Arrow / Ctrl+N Navigate down through the suggestions.
Tab / Enter Accept the selected suggestion.
Up Arrow / Ctrl+P Navigate up through the suggestions.

Radio Button Select

Shortcut Description
Down Arrow / j / Ctrl+N Move selection down.
Enter Confirm selection.
Up Arrow / k / Ctrl+P Move selection up.
1-9 Select an item by its number.
(multi-digit) For items with numbers greater than 9, press the digits in quick succession to select the corresponding item.

History scrollback

Active when ui.useTerminalBuffer is enabled (Settings → UI → Virtualized History), screen reader mode is off, and Qwen Code is running in a compatible interactive terminal (stdout is a TTY, CI is inactive, and TERM is not dumb), which is the default for ordinary non-screen-reader sessions. In that mode conversation history is rendered inside an in-app viewport instead of the host terminal scrollback, so the keys below replace the terminal's native scroll.

Shortcut Description
Shift+Up Scroll history up one line.
Shift+Down Scroll history down one line.
PgUp Scroll history up one page (viewport height).
PgDn Scroll history down one page (viewport height).
Ctrl+Home Jump to the top of the conversation.
Ctrl+End Jump to the bottom (and re-engage live auto-follow).
Mouse wheel Scroll history (3 lines per tick).

When ui.useTerminalBuffer is on, the terminal forwards mouse events to qwen-code so the wheel can drive the in-app viewport. As a side effect, native click-and-drag text selection is consumed by the program, so qwen-code provides its own: drag to select text in the history viewport, double-click to select a word, triple-click to select a line. The selection is highlighted and copied to the clipboard when you release the mouse (works locally, over SSH via OSC 52, and inside tmux). A single click clears the selection; scrolling or new output clears it too. Selection is limited to the visible viewport for now. You can still fall back to the terminal's own selection by holding Shift (or Option on macOS Terminal / iTerm) while dragging.

tmux trackpad scrolling

Inside tmux, some terminals translate trackpad or wheel gestures into plain Up Arrow and Down Arrow sequences before qwen-code sees them. Those bytes are identical to real arrow-key presses, so qwen-code cannot tell whether you meant to scroll the viewport or navigate prompt history.

If trackpad scrolling changes the prompt history in tmux, make sure ui.useTerminalBuffer is enabled; then use Shift+Up / Shift+Down, or the mouse wheel when tmux forwards wheel events to the app. If you prefer host scrollback, adjust your tmux mouse bindings for wheel events.

IDE Integration

Shortcut Description
Ctrl+G See context CLI received from IDE