OpenCode-Tastenkürzel-Konfiguration erklärt

OpenCode bietet ein vollständiges Tastenkürzel-System, das verschiedene Operationen wie Anwendungssteuerung, Sitzungsverwaltung, Nachrichtendurchsicht, Modellwechsel und Eingabebearbeitung abdeckt.

Alle Tastenkürzel können angepasst werden über dietui.jsonDatei.


Konfigurationsdatei

Tastenkürzel-Konfigurationen werden unter demtui.jsonFeld derkeybindsDatei. Der Schlüsselname jedes Eintrags ist der Operationsname, und der Wert ist das entsprechende Tastenkürzel:

Beispiel

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
"leader": "ctrl+x", // Einstellung der Leader-Taste (siehe Erklärung unten)
"session_new": "<leader>n", // Neue Sitzung: Leader-Taste drücken, dann n drücken
"model_list": "<leader>m", // Modellliste öffnen: Leader-Taste drücken, dann m drücken
"session_compact": "none" // Auf "none" setzen, um dieses Tastenkürzel zu deaktivieren
  }
}

Eine Operation kann an mehrere Tastenkürzel gebunden werden, getrennt durch Kommas. Das Auslösen eines beliebigen davon führt die Operation aus:

Beispiel

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
// Die folgende Schreibweise bedeutet: Durch Drücken von pageup oder ctrl+alt+b wird eine Seite nach oben gescrollt
    "messages_page_up": "pageup,ctrl+alt+b"
  }
}

Leader-Taste

Die meisten Tastenkürzel von OpenCode verwenden denLeader-Taste-Mechanismus: Zuerst wird die Leader-Taste gedrückt, dann die Funktionstaste, und die Kombination der beiden Tasten löst die entsprechende Operation aus. Der Vorteil dieses Designs ist, Konflikte mit den eigenen Tastenkürzeln des Terminals zu vermeiden.

Die standardmäßige Leader-Taste istctrl+x. Zum Beispiel ist das Tastenkürzel zum Erstellen einer neuen Sitzung<leader>n, und die tatsächliche Bedienung ist: zuerst drücken Siectrl+x, dann drücken Sien。

Sie können die Leader-Taste auf eine beliebige Tastenkombination ändern:

Beispiel

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
"leader": "ctrl+x" // Ändern Sie die Leader-Taste in eine andere Taste, wie z. B. "ctrl+space", "alt+x", usw.
// Der <leader>-Platzhalter in der Konfiguration wird automatisch durch die hier festgelegte Taste ersetzt
  }
}

Sie müssen nicht den Leader-Taste-Mechanismus verwenden, um Tastenkürzel festzulegen – Sie können auch normale Tasten oder Tastenkombinationen direkt belegen. Es wird jedoch empfohlen, die Leader-Taste zu bevorzugen, um Konflikte mit Terminal-Tastenkürzeln zu vermeiden.


Tastaturkürzel deaktivieren

Setzen Sie den Wert eines beliebigen Tastaturkürzels auf"none"um diese Aktion zu deaktivieren. Nach dem Deaktivieren löst das Drücken einer beliebigen Taste sie nicht mehr aus:

Beispiel

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
"session_compact": "none", // Deaktiviert das Tastaturkürzel "compact session"
"scrollbar_toggle": "none", // Deaktiviert das Tastaturkürzel "toggle scrollbar"
"tips_toggle": "none" // Deaktiviert das Tastaturkürzel "toggle tips"
  }
}

Vollständige Liste der Tastaturkürzel

1. Anwendung & Oberfläche

Aktionsname Standard-Tastaturkürzel Beschreibung
app_exit ctrl+c, ctrl+d, <leader>q OpenCode beenden
editor_open <leader>e Aktuellen Eingabeinhalt mit einem externen Editor öffnen
theme_list <leader>t Öffne die Themenliste und wechsle das Oberflächen-Theme
sidebar_toggle <leader>b Seitenleiste ein- oder ausblenden
scrollbar_toggle Keine (standardmäßig deaktiviert) Bildlaufleiste ein- oder ausblenden
username_toggle Keine (standardmäßig deaktiviert) Benutzernamen ein- oder ausblenden
status_view <leader>s Aktuelle Statusinformationen anzeigen
tool_details Keine (standardmäßig deaktiviert) Details zum Tool-Aufruf anzeigen
command_list ctrl+p Befehlspalette öffnen und alle verfügbaren Befehle durchsuchen
tips_toggle <leader>h Nutzungstipps ein- oder ausblenden
display_thinking Keine (standardmäßig deaktiviert) Den Denkprozess des Modells ein- oder ausblenden
terminal_suspend ctrl+z Terminal unterbrechen (OpenCode in den Hintergrund versetzen und zur Shell zurückkehren; tippefgum fortzufahren)
terminal_title_toggle Keine (standardmäßig deaktiviert) Terminal-Titelleiste ein- oder ausblenden

2. Sitzungsverwaltung

Aktionsname Standard-Tastaturkürzel Beschreibung
session_new <leader>n Neue Sitzung erstellen
session_list <leader>l Alle historischen Sitzungslisten anzeigen
session_export <leader>x Inhalt der aktuellen Sitzung exportieren
session_timeline <leader>g Zeitleiste der aktuellen Sitzung anzeigen
session_fork Keine (standardmäßig deaktiviert) Eine Branch-Sitzung ab der aktuellen Position erstellen
session_rename Keine (standardmäßig deaktiviert) Die aktuelle Sitzung umbenennen
session_share Keine (standardmäßig deaktiviert) Aktuelle Sitzung teilen
session_unshare Keine (standardmäßig deaktiviert) Freigabe der aktuellen Sitzung abbrechen
session_interrupt escape Die aktuell laufende Antwort unterbrechen
session_compact <leader>c Kontext der aktuellen Sitzung komprimieren, um die Token-Nutzung zu reduzieren
session_child_first <leader>↓ Zur ersten untergeordneten Sitzung springen
session_child_cycle <leader>→ Vorwärts durch untergeordnete Sitzungen wechseln
session_child_cycle_reverse <leader>← Rückwärts durch untergeordnete Sitzungen wechseln
session_parent <leader>↑ Zur übergeordneten Sitzung zurückkehren

3. Nachrichtennavigation

Aktionsname Standard-Tastaturkürzel Beschreibung
messages_page_up pageup, ctrl+alt+b Eine Seite Nachrichten nach oben scrollen
messages_page_down pagedown, ctrl+alt+f Eine Seite Nachrichten nach unten scrollen
messages_line_up ctrl+alt+y Eine Zeile nach oben scrollen
messages_line_down ctrl+alt+e Eine Zeile nach unten scrollen
messages_half_page_up ctrl+alt+u Eine halbe Seite nach oben scrollen
messages_half_page_down ctrl+alt+d Eine halbe Seite nach unten scrollen
messages_first ctrl+g, home Zur frühesten ersten Nachricht springen
messages_last ctrl+alt+g, end Zur spätesten letzten Nachricht springen
messages_next Keine (standardmäßig deaktiviert) Zur nächsten Nachricht springen
messages_previous Keine (standardmäßig deaktiviert) Zur vorherigen Nachricht springen
messages_last_user Keine (standardmäßig deaktiviert) Zur letzten Benutzernachricht springen
messages_copy <leader>y Inhalt der aktuellen Nachricht in die Zwischenablage kopieren
messages_undo <leader>u Letzte Aktion rückgängig machen
messages_redo <leader>r Rückgängig gemachte Aktion wiederherstellen
messages_toggle_conceal <leader>h Versteckten Inhalt in Nachrichten ein- oder ausklappen

4. Modelle & Agenten

Aktionsname Standard-Tastaturkürzel Beschreibung
model_list <leader>m Modellliste öffnen, um das aktuell verwendete Modell auszuwählen und zu wechseln
model_cycle_recent f2 Vorwärts durch zuletzt verwendete Modelle wechseln
model_cycle_recent_reverse shift+f2 Rückwärts durch zuletzt verwendete Modelle wechseln
model_cycle_favorite Keine (standardmäßig deaktiviert) Vorwärts durch favorisierte Modelle wechseln
model_cycle_favorite_reverse Keine (standardmäßig deaktiviert) Rückwärts durch favorisierte Modelle wechseln
variant_cycle ctrl+t Durch Varianten des aktuellen Modells wechseln (z. B. Denkmodus)
agent_list <leader>a Agentenliste öffnen, um den aktuell verwendeten Agenten auszuwählen und zu wechseln
agent_cycle tab Vorwärts durch Agenten wechseln
agent_cycle_reverse shift+tab Rückwärts durch Agenten wechseln

5. Bearbeitung des Eingabefelds

Aktionsname Standard-Tastaturkürzel Beschreibung
input_submit return Aktuellen Eingabeinhalt senden
input_newline shift+return, ctrl+return, alt+return, ctrl+j Einen Zeilenumbruch im Eingabefeld einfügen (ohne Senden)
input_clear ctrl+c Inhalt des Eingabefelds löschen
input_paste ctrl+v Inhalt der Zwischenablage in das Eingabefeld einfügen
input_move_left left, ctrl+b Bewege den Cursor um ein Zeichen nach links
input_move_right right, ctrl+f Bewege den Cursor um ein Zeichen nach rechts
input_move_up up Cursor eine Zeile nach oben bewegen
input_move_down down Cursor eine Zeile nach unten bewegen
input_word_forward alt+f, alt+right, ctrl+right Den Cursor um ein Wort nach vorne bewegen
input_word_backward alt+b, alt+left, ctrl+left Den Cursor um ein Wort nach hinten bewegen
input_line_home ctrl+a An den Anfang der aktuellen Zeile bewegen
input_line_end ctrl+e An das Ende der aktuellen Zeile bewegen
input_visual_line_home alt+a An den Anfang der aktuellen visuellen Zeile bewegen (die Zeile, wie sie nach dem Umbruch angezeigt wird)
input_visual_line_end alt+e An das Ende der aktuellen visuellen Zeile bewegen
input_buffer_home home Ganz an den Anfang des gesamten Inhalts des Eingabefelds springen
input_buffer_end end Ganz an das Ende des gesamten Inhalts des Eingabefelds springen
input_delete_to_line_end ctrl+k Den gesamten Inhalt vom Cursor bis zum Ende der aktuellen Zeile löschen
input_delete_to_line_start ctrl+u Den gesamten Inhalt vom Anfang der aktuellen Zeile bis zum Cursor löschen
input_delete_line ctrl+shift+d Die gesamte Zeile löschen, in der sich der Cursor befindet
input_backspace backspace, shift+backspace Das Zeichen vor dem Cursor löschen
input_delete ctrl+d, delete, shift+delete Das Zeichen nach dem Cursor löschen
input_delete_word_forward alt+d, alt+delete, ctrl+delete Das Wort nach dem Cursor löschen
input_delete_word_backward ctrl+w, ctrl+backspace, alt+backspace Das Wort vor dem Cursor löschen
input_undo ctrl+-, super+z Die letzte Bearbeitung im Eingabefeld rückgängig machen
input_redo ctrl+., super+shift+z Die rückgängig gemachte Bearbeitung wiederherstellen

6. Textauswahl

Aktionsname Standard-Tastaturkürzel Beschreibung
input_select_left shift+left Ein Zeichen nach links auswählen
input_select_right shift+right Ein Zeichen nach rechts auswählen
input_select_up shift+up Eine Zeile nach oben auswählen
input_select_down shift+down Eine Zeile nach unten auswählen
input_select_word_forward alt+shift+f, alt+shift+right Ein Wort vorwärts auswählen
input_select_word_backward alt+shift+b, alt+shift+left Ein Wort rückwärts auswählen
input_select_line_home ctrl+shift+a Von der Cursorposition bis zum Anfang der aktuellen Zeile auswählen
input_select_line_end ctrl+shift+e Von der Cursorposition bis zum Ende der aktuellen Zeile auswählen
input_select_visual_line_home alt+shift+a Von der Cursorposition bis zum Anfang der aktuellen visuellen Zeile auswählen
input_select_visual_line_end alt+shift+e Von der Cursorposition bis zum Ende der aktuellen visuellen Zeile auswählen
input_select_buffer_home shift+home Von der Cursorposition bis zum absoluten Anfang des Eingabefelds auswählen
input_select_buffer_end shift+end Von der Cursorposition bis zum absoluten Ende des Eingabefelds auswählen

7. Eingabeverlauf

Aktionsname Standard-Tastaturkürzel Beschreibung
history_previous up Vorherige Verlaufseingabe abrufen (funktioniert, wenn das Eingabefeld leer ist)
history_next down Nächste Verlaufseingabe abrufen

Integrierte Eingabe-Kurzbefehle der Desktop-Version

Das Prompt-Eingabefeld in der OpenCode-Desktop-Version verfügt zusätzlich über eine integrierte Reihe vonReadline-/Emacs-StilTextbearbeitungs-Kurzbefehlen,Diese Kurzbefehle sind integrierte Funktionen und können nichttui.jsondurch Ändern oder Deaktivieren geändert werden:

Tastenkürzel. Aktion
ctrl+a An den Anfang der aktuellen Zeile bewegen
ctrl+e An das Ende der aktuellen Zeile bewegen
ctrl+b Den Cursor ein Zeichen rückwärts bewegen
ctrl+f Den Cursor ein Zeichen vorwärts bewegen
alt+b Den Cursor ein Wort rückwärts bewegen
alt+f Den Cursor ein Wort vorwärts bewegen
ctrl+d Das Zeichen an der Cursorposition löschen
ctrl+k Den Inhalt vom Cursor bis zum Zeilenende löschen
ctrl+u Den Inhalt vom Cursor bis zum Zeilenanfang löschen
ctrl+w Das vorherige Wort löschen
alt+d Das nächste Wort löschen
ctrl+t Die Positionen der beiden Zeichen vor und nach dem Cursor vertauschen
ctrl+g Das aktuelle Popup-Fenster schließen oder die laufende Antwort abbrechen

Shift+Enter für Zeilenumbrüche konfigurieren

Einige Terminals senden Enter mit Modifikatortasten standardmäßig nicht (z. B.Shift+Enter) als separaten Tastendruck, wodurch das Drücken in OpenCodeShift+Enterkeine neue Zeile erzeugt, sondern die Nachricht direkt sendet.

Konfigurationsmethode für Windows Terminal

Schritt 1:Öffnen Sie die Windows-Terminal-settings.jsonDatei, der Pfad lautet:

%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

Schritt 2:Im Root-Level-actionsArray der Datei, fügen Sie die folgende Konfiguration hinzu, um eineShift+EnterAktion, die eine Escape-Sequenz sendet:

Beispiel

"actions": [
  {
    "command": {
      "action": "sendInput",
"input": "\u001b[13;2u" // Standard-Escapesequenz für Shift+Enter (CSI-u-Format)
    },
    "id": "User.sendInput.ShiftEnterCustom"
  }
]

Schritt 3:In dem Root-LevelkeybindingsArray der Datei, fügen Sie eine Tastenbelegung hinzu, um sieShift+Enterder oben definierten Aktion zuzuordnen:

Beispiel

"keybindings": [
  {
    "keys": "shift+enter",
    "id": "User.sendInput.ShiftEnterCustom"
  }
]

Schritt 4:Speichernsettings.jsonNach dem Speichern der Datei starten Sie Windows Terminal neu oder öffnen Sie einen neuen Tab, damit die Konfiguration wirksam wird.

Wenn Sie andere Terminals verwenden (wie iTerm2, Kitty, Alacritty usw.), lesen Sie in der Dokumentation des jeweiligen Terminals nach, suchen Sie die Einstellungen für "Key Mappings" oder "Key bindings" und stellen SieShift+Enteres so ein, dass es sendet\u001b[13;2udie Escape-Sequenz.

Andere Erweiterungen