Tastenkürzel
Passen Sie Ihre Tastenkürzel an.
OpenCode verfügt über eine Liste von Tastenkürzeln, die Sie über tui.json anpassen können.
{
"$schema": "https://opencode.ai/tui.json",
"leader_timeout": 2000,
"keybinds": {
"leader": "ctrl+x",
"app_exit": "ctrl+c,ctrl+d,<leader>q",
"app_debug": "none",
"app_console": "none",
"app_heap_snapshot": "none",
"app_toggle_animations": "none",
"app_toggle_file_context": "none",
"app_toggle_diffwrap": "none",
"app_toggle_paste_summary": "none",
"app_toggle_session_directory_filter": "none",
"command_list": "ctrl+p",
"help_show": "none",
"docs_open": "none",
"editor_open": "<leader>e",
"theme_list": "<leader>t",
"theme_switch_mode": "none",
"theme_mode_lock": "none",
"sidebar_toggle": "<leader>b",
"scrollbar_toggle": "none",
"status_view": "<leader>s",
"session_export": "<leader>x",
"session_copy": "none",
"session_new": "<leader>n",
"session_list": "<leader>l",
"session_timeline": "<leader>g",
"session_fork": "none",
"session_rename": "ctrl+r",
"session_delete": "ctrl+d",
"session_share": "none",
"session_unshare": "none",
"session_interrupt": "escape",
"session_compact": "<leader>c",
"session_toggle_timestamps": "none",
"session_toggle_generic_tool_output": "none",
"session_child_first": "<leader>down",
"session_child_cycle": "right",
"session_child_cycle_reverse": "left",
"session_parent": "up",
"stash_delete": "ctrl+d",
"model_provider_list": "ctrl+a",
"model_favorite_toggle": "ctrl+f",
"model_list": "<leader>m",
"model_cycle_recent": "f2",
"model_cycle_recent_reverse": "shift+f2",
"model_cycle_favorite": "none",
"model_cycle_favorite_reverse": "none",
"mcp_list": "none",
"provider_connect": "none",
"console_org_switch": "none",
"agent_list": "<leader>a",
"agent_cycle": "tab",
"agent_cycle_reverse": "shift+tab",
"variant_cycle": "ctrl+t",
"variant_list": "none",
"messages_page_up": "pageup,ctrl+alt+b",
"messages_page_down": "pagedown,ctrl+alt+f",
"messages_line_up": "ctrl+alt+y",
"messages_line_down": "ctrl+alt+e",
"messages_half_page_up": "ctrl+alt+u",
"messages_half_page_down": "ctrl+alt+d",
"messages_first": "ctrl+g,home",
"messages_last": "ctrl+alt+g,end",
"messages_next": "none",
"messages_previous": "none",
"messages_last_user": "none",
"messages_copy": "<leader>y",
"messages_undo": "<leader>u",
"messages_redo": "<leader>r",
"messages_toggle_conceal": "<leader>h",
"tool_details": "none",
"display_thinking": "none",
"prompt_submit": "none",
"prompt_editor_context_clear": "none",
"prompt_skills": "none",
"prompt_stash": "none",
"prompt_stash_pop": "none",
"prompt_stash_list": "none",
"workspace_set": "none",
"input_clear": "ctrl+c",
"input_paste": {
"key": "ctrl+v",
"preventDefault": false
},
"input_submit": "return",
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
"input_move_left": "left,ctrl+b",
"input_move_right": "right,ctrl+f",
"input_move_up": "up",
"input_move_down": "down",
"input_select_left": "shift+left",
"input_select_right": "shift+right",
"input_select_up": "shift+up",
"input_select_down": "shift+down",
"input_line_home": "ctrl+a",
"input_line_end": "ctrl+e",
"input_select_line_home": "ctrl+shift+a",
"input_select_line_end": "ctrl+shift+e",
"input_visual_line_home": "alt+a",
"input_visual_line_end": "alt+e",
"input_select_visual_line_home": "alt+shift+a",
"input_select_visual_line_end": "alt+shift+e",
"input_buffer_home": "home",
"input_buffer_end": "end",
"input_select_buffer_home": "shift+home",
"input_select_buffer_end": "shift+end",
"input_delete_line": "ctrl+shift+d",
"input_delete_to_line_end": "ctrl+k",
"input_delete_to_line_start": "ctrl+u",
"input_backspace": "backspace,shift+backspace",
"input_delete": "ctrl+d,delete,shift+delete",
"input_undo": "ctrl+-,super+z",
"input_redo": "ctrl+.,super+shift+z",
"input_word_forward": "alt+f,alt+right,ctrl+right",
"input_word_backward": "alt+b,alt+left,ctrl+left",
"input_select_word_forward": "alt+shift+f,alt+shift+right",
"input_select_word_backward": "alt+shift+b,alt+shift+left",
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
"input_select_all": "super+a",
"history_previous": "up",
"history_next": "down",
"dialog.select.prev": "up,ctrl+p",
"dialog.select.next": "down,ctrl+n",
"dialog.select.page_up": "pageup",
"dialog.select.page_down": "pagedown",
"dialog.select.home": "home",
"dialog.select.end": "end",
"dialog.select.submit": "return",
"dialog.prompt.submit": "return",
"dialog.mcp.toggle": "space",
"prompt.autocomplete.prev": "up,ctrl+p",
"prompt.autocomplete.next": "down,ctrl+n",
"prompt.autocomplete.hide": "escape",
"prompt.autocomplete.select": "return",
"prompt.autocomplete.complete": "tab",
"permission.prompt.fullscreen": "ctrl+f",
"plugins.toggle": "space",
"dialog.plugins.install": "shift+i",
"terminal_suspend": "ctrl+z",
"terminal_title_toggle": "none",
"tips_toggle": "<leader>h",
"plugin_manager": "none",
"plugin_install": "none",
"which_key_toggle": "ctrl+alt+k",
"which_key_layout_toggle": "ctrl+alt+shift+k",
"which_key_pending_toggle": "ctrl+alt+shift+p",
"which_key_group_previous": "ctrl+alt+left,ctrl+alt+[",
"which_key_group_next": "ctrl+alt+right,ctrl+alt+]",
"which_key_scroll_up": "ctrl+alt+up,ctrl+alt+p",
"which_key_scroll_down": "ctrl+alt+down,ctrl+alt+n",
"which_key_page_up": "ctrl+alt+pageup",
"which_key_page_down": "ctrl+alt+pagedown",
"which_key_home": "ctrl+alt+home",
"which_key_end": "ctrl+alt+end"
}
}Hinweis: Unter Windows sind die Standardwerte für
input_undoundterminal_suspendunterschiedlich:
input_undoist standardmäßigctrl+z,ctrl+-,super+z, wenn es nicht explizit konfiguriert ist. Diectrl+z-Bindung wird hinzugefügt, weil Windows-Terminals POSIX-Suspend nicht unterstützen.terminal_suspendwird aufnoneerzwungen, weil native Windows-Terminals POSIX-Suspend nicht unterstützen.
Leader-Key
OpenCode verwendet für viele Tastenkürzel einen leader-Key. Dies vermeidet Konflikte in Ihrem Terminal.
Standardmäßig ist ctrl+x der Leader-Key, und viele Aktionen erfordern, dass Sie zuerst den Leader-Key und dann das Kürzel drücken. Um beispielsweise eine neue Sitzung zu starten, drücken Sie zuerst ctrl+x und dann n.
Sie müssen für Ihre Tastenkürzel keinen Leader-Key verwenden, wir empfehlen es jedoch.
Einige Navigations-Tastenkürzel verwenden standardmäßig absichtlich keinen Leader-Key. Für Subagent-Sitzungen sind die Standardwerte session_child_first = <leader>down, session_child_cycle = right, session_child_cycle_reverse = left und session_parent = up.
leader_timeout steuert, wie lange OpenCode nach dem Leader-Key auf den nächsten Tastendruck wartet. Der Standardwert beträgt 2000 Millisekunden.
Bindungswerte
Eine Zeichenkette kann ein Kürzel oder mehrere durch Kommas getrennte Kürzel enthalten. Sie können auch ein Array für mehrere Kürzel verwenden.
Für fortgeschrittene Fälle verwenden Sie ein Objekt mit key, event, preventDefault oder fallthrough.
{
"$schema": "https://opencode.ai/tui.json",
"keybinds": {
"messages_copy": ["<leader>y", "ctrl+shift+c"],
"input_paste": {
"key": "ctrl+v",
"preventDefault": false
}
}
}Tastenkürzel deaktivieren
Sie können ein Tastenkürzel deaktivieren, indem Sie den Schlüssel mit dem Wert "none" oder false zu tui.json hinzufügen.
{
"$schema": "https://opencode.ai/tui.json",
"keybinds": {
"session_compact": "none"
}
}Desktop-Prompt-Kürzel
Das Prompt-Eingabefeld der OpenCode Desktop-App unterstützt gängige Readline-/Emacs-Kürzel zur Textbearbeitung. Diese sind integriert und derzeit nicht über opencode.json konfigurierbar.
| Kürzel | Aktion |
|---|---|
ctrl+a | Zum Anfang der aktuellen Zeile springen |
ctrl+e | Zum Ende der aktuellen Zeile springen |
ctrl+b | Cursor um ein Zeichen zurück bewegen |
ctrl+f | Cursor um ein Zeichen vorwärts bewegen |
alt+b | Cursor um ein Wort zurück bewegen |
alt+f | Cursor um ein Wort vorwärts bewegen |
ctrl+d | Zeichen unter dem Cursor löschen |
ctrl+k | Bis zum Zeilenende löschen |
ctrl+u | Bis zum Zeilenanfang löschen |
ctrl+w | Vorheriges Wort löschen |
alt+d | Nächstes Wort löschen |
ctrl+t | Zeichen vertauschen |
ctrl+g | Popovers schließen / laufende Antwort abbrechen |
Shift+Enter
Einige Terminals senden standardmäßig keine Modifikatortasten mit Enter. Möglicherweise müssen Sie Ihr Terminal so konfigurieren, dass Shift+Enter als Escape-Sequenz gesendet wird.
Windows Terminal
Öffnen Sie Ihre settings.json unter:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.jsonFügen Sie dies zum actions-Array auf Root-Ebene hinzu:
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]Fügen Sie dies zum keybindings-Array auf Root-Ebene hinzu:
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]Speichern Sie die Datei und starten Sie Windows Terminal neu oder öffnen Sie einen neuen Tab.