Skip to content

Keyboard Shortcuts Reference ​

Print this page and stick it next to your monitor - muscle memory in three days


Leader Key ​

OpenCode uses a Leader Key to avoid conflicts with terminal shortcuts.

Default Leader Key: Ctrl+X

Usage: Press Ctrl+X, release, then press the second key.


TUI Shortcuts ​

Basic Operations ​

ShortcutActionDescription
EnterSend messageSend current input
Shift+EnterNew lineAdd newline in input box
TabSwitch AgentCycle through primary agents
Shift+TabReverse switchReverse cycle through primary agents
EscapeInterruptStop current AI response
Ctrl+CClear inputClear input box content
Ctrl+DExitClose OpenCode
Ctrl+PCommand listOpen command palette

Leader Key Operations ​

ShortcutActionDescription
Leader → nNew sessionSame as /new
Leader → lSession listSame as /sessions
Leader → mModel listSame as /models
Leader → aAgent listSelect Agent
Leader → tTheme listSame as /theme
Leader → eEditorOpen external editor
Leader → cCompactCompact current session context
Leader → uUndoUndo last change
Leader → rRedoRedo last undo
Leader → xExportExport current session
Leader → sStatusView status
Leader → bSidebarToggle sidebar display
Leader → gTimelineSession timeline
Leader → yCopyCopy message
Leader → hHide detailsToggle details display
Leader → qQuitClose OpenCode

Session Navigation ​

ShortcutActionDescription
Leader → →Child sessionSwitch to child Agent session
Leader → ←Reverse childReverse cycle child sessions
Leader → ↑Parent sessionReturn to parent session

Message Scrolling ​

ShortcutAction
Page UpScroll up one page
Page DownScroll down one page
Ctrl+Alt+UScroll up half page
Ctrl+Alt+DScroll down half page
Ctrl+G / HomeJump to top
Ctrl+Alt+G / EndJump to bottom

Input Area Operations ​

ShortcutAction
Ctrl+AMove cursor to line start
Ctrl+EMove cursor to line end
Ctrl+BMove cursor back one character
Ctrl+FMove cursor forward one character
Alt+BMove cursor back one word
Alt+FMove cursor forward one word
Ctrl+KDelete to end of line
Ctrl+UDelete to start of line
Ctrl+WDelete previous word
Alt+DDelete next word
Ctrl+DDelete current character
↑ / ↓Browse input history

Model Switching ​

ShortcutAction
F2Cycle recent models
Shift+F2Reverse cycle
Ctrl+TCycle variants

Permission Confirmation ​

ShortcutAction
yAllow
nDeny
aAlways allow (this session)

IDE Extension Shortcuts ​

VS Code / Cursor ​

Shortcut (macOS)Shortcut (Win/Linux)Action
Cmd+EscCtrl+EscOpen OpenCode panel
Cmd+Shift+EscCtrl+Shift+EscNew session
Cmd+Option+KAlt+Ctrl+KInsert file reference

Desktop Input Shortcuts ​

OpenCode desktop app input box supports Readline/Emacs style shortcuts. These are built-in and cannot be configured via opencode.json:

ShortcutAction
Ctrl+AMove to line start
Ctrl+EMove to line end
Ctrl+BMove cursor back one character
Ctrl+FMove cursor forward one character
Alt+BMove cursor back one word
Alt+FMove cursor forward one word
Ctrl+DDelete character under cursor
Ctrl+KDelete to end of line
Ctrl+UDelete to start of line
Ctrl+WDelete previous word
Alt+DDelete next word
Ctrl+TTranspose characters
Ctrl+GCancel popup / interrupt response

Custom Shortcuts ​

Configure in opencode.json:

json
{
  "$schema": "https://opencode.ai/config.json",
  "keybinds": {
    "leader": "ctrl+x",
    "session_new": "<leader>n",
    "session_list": "<leader>l",
    "model_list": "<leader>m"
  }
}

Disable Shortcuts ​

Set to "none" to disable:

json
{
  "keybinds": {
    "session_compact": "none"
  }
}

Multiple Key Bindings ​

Separate multiple keys with commas:

json
{
  "keybinds": {
    "app_exit": "ctrl+c,ctrl+d,<leader>q"
  }
}

All Configurable Key Bindings ​

Source: keybinds.mdx

Basic Bindings ​

Key NameDefaultDescription
leaderctrl+xLeader key
app_exitctrl+c,ctrl+d,<leader>qExit

Session Management ​

Key NameDefaultDescription
session_new<leader>nNew session
session_list<leader>lSession list
session_export<leader>xExport session
session_interruptescapeInterrupt response
session_compact<leader>cCompact context
session_timeline<leader>gTimeline
session_child_cycle<leader>rightCycle child sessions
session_child_cycle_reverse<leader>leftReverse cycle child sessions
session_parent<leader>upReturn to parent session
session_forknoneFork session
session_renamectrl+rRename session
session_deletectrl+dDelete session
session_sharenoneShare session
session_unsharenoneUnshare session

Model & Agent ​

Key NameDefaultDescription
model_list<leader>mModel list
model_cycle_recentf2Cycle recent models
model_cycle_recent_reverseshift+f2Reverse cycle recent models
model_cycle_favoritenoneCycle favorite models
model_cycle_favorite_reversenoneReverse cycle favorite models
variant_cyclectrl+tCycle model variants
agent_list<leader>aAgent list
agent_cycletabCycle agents
agent_cycle_reverseshift+tabReverse cycle agents

Interface Control ​

Key NameDefaultDescription
theme_list<leader>tTheme list
editor_open<leader>eOpen editor
sidebar_toggle<leader>bToggle sidebar
scrollbar_togglenoneToggle scrollbar
username_togglenoneToggle username display
status_view<leader>sStatus view
tool_detailsnoneTool details
command_listctrl+pCommand palette
tips_toggle<leader>hToggle tips display

Message Operations ​

Key NameDefaultDescription
messages_undo<leader>uUndo
messages_redo<leader>rRedo
messages_copy<leader>yCopy
messages_toggle_conceal<leader>hToggle detail hiding
messages_nextnoneNext message
messages_previousnonePrevious message
messages_last_usernoneJump to last user message
messages_page_uppageup,ctrl+alt+bPage up
messages_page_downpagedown,ctrl+alt+fPage down
messages_half_page_upctrl+alt+uHalf page up
messages_half_page_downctrl+alt+dHalf page down
messages_firstctrl+g,homeJump to top
messages_lastctrl+alt+g,endJump to bottom

Input Box Operations ​

Key NameDefaultDescription
input_submitreturnSubmit
input_newlineshift+return,ctrl+return,alt+return,ctrl+jNew line
input_clearctrl+cClear input
input_pastectrl+vPaste
input_move_leftleft,ctrl+bMove cursor left
input_move_rightright,ctrl+fMove cursor right
input_move_upupMove cursor up
input_move_downdownMove cursor down
input_select_leftshift+leftSelect left
input_select_rightshift+rightSelect right
input_select_upshift+upSelect up
input_select_downshift+downSelect down
input_line_homectrl+aLine start
input_line_endctrl+eLine end
input_select_line_homectrl+shift+aSelect to line start
input_select_line_endctrl+shift+eSelect to line end
input_visual_line_homealt+aVisual line start
input_visual_line_endalt+eVisual line end
input_select_visual_line_homealt+shift+aSelect to visual line start
input_select_visual_line_endalt+shift+eSelect to visual line end
input_buffer_homehomeBuffer start
input_buffer_endendBuffer end
input_select_buffer_homeshift+homeSelect to buffer start
input_select_buffer_endshift+endSelect to buffer end
input_delete_linectrl+shift+dDelete line
input_delete_to_line_endctrl+kDelete to line end
input_delete_to_line_startctrl+uDelete to line start
input_backspacebackspace,shift+backspaceBackspace
input_deletectrl+d,delete,shift+deleteDelete
input_undoctrl+-,super+zUndo input
input_redoctrl+.,super+shift+zRedo input
input_word_forwardalt+f,alt+right,ctrl+rightNext word
input_word_backwardalt+b,alt+left,ctrl+leftPrevious word
input_select_word_forwardalt+shift+f,alt+shift+rightSelect next word
input_select_word_backwardalt+shift+b,alt+shift+leftSelect previous word
input_delete_word_forwardalt+d,alt+delete,ctrl+deleteDelete next word
input_delete_word_backwardctrl+w,ctrl+backspace,alt+backspaceDelete previous word

History & Terminal ​

Key NameDefaultDescription
history_previousupPrevious history
history_nextdownNext history
terminal_suspendctrl+zSuspend terminal
terminal_title_togglenoneToggle terminal title

Shift+Enter Configuration ​

Some terminals don't send Shift+Enter by default.

Windows Terminal Configuration ​

Edit settings.json:

json
{
  "actions": [
    {
      "command": {
        "action": "sendInput",
        "input": "\u001b[13;2u"
      },
      "id": "User.sendInput.ShiftEnterCustom"
    }
  ],
  "keybindings": [
    {
      "keys": "shift+enter",
      "id": "User.sendInput.ShiftEnterCustom"
    }
  ]
}

Quick Mnemonic ​

Tab switches Agents, Ctrl+C clears
Leader plus letters, functions appear
n for new, l for list, m for models
u for undo, r for redo, no worries
Arrow keys left and right, child sessions go back and forth