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
{
"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
{
"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.
Andere ErweiterungenWenn 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 Sie
Shift+Enteres so ein, dass es sendet\u001b[13;2udie Escape-Sequenz.