Deutsch
Dokumentation
Tastenkürzel

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.

tui.json
{
  "$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_undo und terminal_suspend unterschiedlich:

  • input_undo ist standardmäßig ctrl+z,ctrl+-,super+z, wenn es nicht explizit konfiguriert ist. Die ctrl+z-Bindung wird hinzugefügt, weil Windows-Terminals POSIX-Suspend nicht unterstützen.
  • terminal_suspend wird auf none erzwungen, 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.

tui.json
{
  "$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.

tui.json
{
  "$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ürzelAktion
ctrl+aZum Anfang der aktuellen Zeile springen
ctrl+eZum Ende der aktuellen Zeile springen
ctrl+bCursor um ein Zeichen zurück bewegen
ctrl+fCursor um ein Zeichen vorwärts bewegen
alt+bCursor um ein Wort zurück bewegen
alt+fCursor um ein Wort vorwärts bewegen
ctrl+dZeichen unter dem Cursor löschen
ctrl+kBis zum Zeilenende löschen
ctrl+uBis zum Zeilenanfang löschen
ctrl+wVorheriges Wort löschen
alt+dNächstes Wort löschen
ctrl+tZeichen vertauschen
ctrl+gPopovers 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.json

Fü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.