Files
gemini-cli/docs/reference/keyboard-shortcuts.md

17 KiB

Gemini CLI keyboard shortcuts

Gemini CLI ships with a set of default keyboard shortcuts for editing input, navigating history, and controlling the UI. Use this reference to learn the available combinations.

Basic Controls

Command Action Keys
basic.confirm Confirm the current selection or choice. Enter
basic.cancel Dismiss dialogs or cancel the current focus. Esc
Ctrl+[
basic.quit Cancel the current request or quit the CLI when input is empty. Ctrl+C
basic.exit Exit the CLI when the input buffer is empty. Ctrl+D

Cursor Movement

Command Action Keys
cursor.home Move the cursor to the start of the line. Ctrl+A
Home
cursor.end Move the cursor to the end of the line. Ctrl+E
End
cursor.up Move the cursor up one line. Up
cursor.down Move the cursor down one line. Down
cursor.left Move the cursor one character to the left. Left
cursor.right Move the cursor one character to the right. Right
Ctrl+F
cursor.wordLeft Move the cursor one word to the left. Ctrl+Left
Alt+Left
Alt+B
cursor.wordRight Move the cursor one word to the right. Ctrl+Right
Alt+Right
Alt+F

Editing

Command Action Keys
edit.deleteRightAll Delete from the cursor to the end of the line. Ctrl+K
edit.deleteLeftAll Delete from the cursor to the start of the line. Ctrl+U
edit.clear Clear all text in the input field. Ctrl+C
edit.deleteWordLeft Delete the previous word. Ctrl+Backspace
Alt+Backspace
Ctrl+W
edit.deleteWordRight Delete the next word. Ctrl+Delete
Alt+Delete
Alt+D
edit.deleteLeft Delete the character to the left. Backspace
Ctrl+H
edit.deleteRight Delete the character to the right. Delete
Ctrl+D
edit.undo Undo the most recent text edit. Cmd/Win+Z
Alt+Z
edit.redo Redo the most recent undone text edit. Ctrl+Shift+Z
Shift+Cmd/Win+Z
Alt+Shift+Z

Scrolling

Command Action Keys
scroll.up Scroll content up. Shift+Up
scroll.down Scroll content down. Shift+Down
scroll.home Scroll to the top. Ctrl+Home
Shift+Home
scroll.end Scroll to the bottom. Ctrl+End
Shift+End
scroll.pageUp Scroll up by one page. Page Up
scroll.pageDown Scroll down by one page. Page Down
Command Action Keys
history.previous Show the previous entry in history. Ctrl+P
history.next Show the next entry in history. Ctrl+N
history.search.start Start reverse search through history. Ctrl+R
history.search.submit Submit the selected reverse-search match. Enter
history.search.accept Accept a suggestion while reverse searching. Tab

Navigation

Command Action Keys
nav.up Move selection up in lists. Up
nav.down Move selection down in lists. Down
nav.dialog.up Move up within dialog options. Up
K
nav.dialog.down Move down within dialog options. Down
J
nav.dialog.next Move to the next item or question in a dialog. Tab
nav.dialog.previous Move to the previous item or question in a dialog. Shift+Tab

Suggestions & Completions

Command Action Keys
suggest.accept Accept the inline suggestion. Tab
Enter
suggest.focusPrevious Move to the previous completion option. Up
Ctrl+P
suggest.focusNext Move to the next completion option. Down
Ctrl+N
suggest.expand Expand an inline suggestion. Right
suggest.collapse Collapse an inline suggestion. Left

Text Input

Command Action Keys
input.submit Submit the current prompt. Enter
input.newline Insert a newline without submitting. Ctrl+Enter
Cmd/Win+Enter
Alt+Enter
Shift+Enter
Ctrl+J
input.openExternalEditor Open the current prompt or the plan in an external editor. Ctrl+X
input.paste Paste from the clipboard. Ctrl+V
Cmd/Win+V
Alt+V

App Controls

Command Action Keys
app.showErrorDetails Toggle detailed error information. F12
app.showFullTodos Toggle the full TODO list. Ctrl+T
app.showIdeContextDetail Show IDE context details. Ctrl+G
app.toggleMarkdown Toggle Markdown rendering. Alt+M
app.toggleCopyMode Toggle copy mode when in alternate buffer mode. Ctrl+S
app.toggleYolo Toggle YOLO (auto-approval) mode for tool calls. Ctrl+Y
app.cycleApprovalMode Cycle through approval modes: default (prompt), auto_edit (auto-approve edits), and plan (read-only). Plan mode is skipped when the agent is busy. Shift+Tab
app.showMoreLines Expand and collapse blocks of content when not in alternate buffer mode. Ctrl+O
app.expandPaste Expand or collapse a paste placeholder when cursor is over placeholder. Ctrl+O
app.focusShellInput Move focus from Gemini to the active shell. Tab
app.unfocusShellInput Move focus from the shell back to Gemini. Shift+Tab
app.clearScreen Clear the terminal screen and redraw the UI. Ctrl+L
app.restart Restart the application. R
Shift+R
app.suspend Suspend the CLI and move it to the background. Ctrl+Z
app.showShellUnfocusWarning Show warning when trying to move focus away from shell input. Tab

Background Shell Controls

Command Action Keys
background.escape Dismiss background shell list. Esc
background.select Confirm selection in background shell list. Enter
background.toggle Toggle current background shell visibility. Ctrl+B
background.toggleList Toggle background shell list. Ctrl+L
background.kill Kill the active background shell. Ctrl+K
background.unfocus Move focus from background shell to Gemini. Shift+Tab
background.unfocusList Move focus from background shell list to Gemini. Tab
background.unfocusWarning Show warning when trying to move focus away from background shell. Tab

Customizing Keybindings

You can add alternative keybindings or remove default keybindings by creating a keybindings.json file in your home gemini directory (typically ~/.gemini/keybindings.json).

Configuration Format

The configuration uses a JSON array of objects, similar to VS Code's keybinding schema. Each object must specify a command from the reference tables above and a key combination.

[
  {
    "command": "edit.clear",
    "key": "cmd+l"
  },
  {
    // prefix "-" to unbind a key
    "command": "-app.toggleYolo",
    "key": "ctrl+y"
  },
  {
    "command": "input.submit",
    "key": "ctrl+y"
  },
  {
    // multiple modifiers
    "command": "cursor.right",
    "key": "shift+alt+a"
  },
  {
    // Some mac keyboards send "Å" instead of "shift+option+a"
    "command": "cursor.right",
    "key": "Å"
  },
  {
    // some base keys have special multi-char names
    "command": "cursor.right",
    "key": "shift+pageup"
  }
]
  • Unbinding To remove an existing or default keybinding, prefix a minus sign (-) to the command name.
  • No Auto-unbinding The same key can be bound to multiple commands in different contexts at the same time. Therefore, creating a binding does not automatically unbind the key from other commands.
  • Explicit Modifiers: Key matching is explicit. For example, a binding for ctrl+f will only trigger on exactly ctrl+f, not ctrl+shift+f or alt+ctrl+f.
  • Literal Characters: Terminals often translate complex key combinations (especially on macOS with the Option key) into special characters, losing modifier and keystroke information along the way. For example,shift+5 might be sent as %. In these cases, you must bind to the literal character % as bindings to shift+5 will never fire. To see precisely what is being sent, enable Debug Keystroke Logging and hit f12 to open the debug log console.
  • Key Modifiers: The supported key modifiers are:
    • ctrl
    • shift,
    • alt (synonyms: opt, option)
    • cmd (synonym: meta)
  • Base Key: The base key can be any single unicode code point or any of the following special keys:
    • Navigation: up, down, left, right, home, end, pageup, pagedown
    • Actions: enter, escape, tab, space, backspace, delete, clear, insert, printscreen
    • Toggles: capslock, numlock, scrolllock, pausebreak
    • Function Keys: f1 through f35
    • Numpad: numpad0 through numpad9, numpad_add, numpad_subtract, numpad_multiply, numpad_divide, numpad_decimal, numpad_separator

Additional context-specific shortcuts

  • Option+B/F/M (macOS only): Are interpreted as Cmd+B/F/M even if your terminal isn't configured to send Meta with Option.
  • ! on an empty prompt: Enter or exit shell mode.
  • ? on an empty prompt: Toggle the shortcuts panel above the input. Press Esc, Backspace, any printable key, or a registered app hotkey to close it. The panel also auto-hides while the agent is running/streaming or when action-required dialogs are shown. Press ? again to close the panel and insert a ? into the prompt.
  • Tab + Tab (while typing in the prompt): Toggle between minimal and full UI details when no completion/search interaction is active. The selected mode is remembered for future sessions. Full UI remains the default on first run, and single Tab keeps its existing completion/focus behavior.
  • Shift + Tab (while typing in the prompt): Cycle approval modes: default, auto-edit, and plan (skipped when agent is busy).
  • \ (at end of a line) + Enter: Insert a newline without leaving single-line mode.
  • Esc pressed twice quickly: Clear the input prompt if it is not empty, otherwise browse and rewind previous interactions.
  • Up Arrow / Down Arrow: When the cursor is at the top or bottom of a single-line input, navigate backward or forward through prompt history.
  • Number keys (1-9, multi-digit) inside selection dialogs: Jump directly to the numbered radio option and confirm when the full number is entered.
  • Ctrl + O: Expand or collapse paste placeholders ([Pasted Text: X lines]) inline when the cursor is over the placeholder.
  • Double-click on a paste placeholder (alternate buffer mode only): Expand to view full content inline. Double-click again to collapse.

Limitations

  • On Windows Terminal:
    • shift+enter is only supported in version 1.25 and higher.
    • shift+tab is not supported on Node 20 and earlier versions of Node 22.
  • On macOS's Terminal:
    • shift+enter is not supported.