/keybindings aus, um Ihre Konfigurationsdatei unter ~/.claude/keybindings.json zu erstellen oder zu öffnen.
Konfigurationsdatei
Die Keybindings-Konfigurationsdatei ist ein Objekt mit einembindings-Array. Jeder Block gibt einen Kontext und eine Zuordnung von Tastenkombinationen zu Aktionen an.
Änderungen an der Keybindings-Datei werden automatisch erkannt und angewendet, ohne Claude Code neu zu starten.
Dieses Beispiel bindet
Ctrl+E zum Öffnen eines externen Editors im Chat-Kontext und hebt die Bindung von Ctrl+U auf:
Kontexte
Jeder Binding-Block gibt einen Kontext an, in dem die Bindings gelten:
Vor v2.1.205 existierten ein
Doctor-Kontext und eine doctor:fix-Aktion für den /doctor-Diagnose-Bildschirm.
Verfügbare Aktionen
Aktionen folgen einemnamespace:action-Format, wie chat:submit zum Senden einer Nachricht oder app:toggleTodos zum Anzeigen der Aufgabenliste. Jeder Kontext hat spezifische verfügbare Aktionen.
App-Aktionen
Aktionen verfügbar imGlobal-Kontext:
Verlaufsaktionen
Aktionen zum Navigieren im Befehlsverlauf:Chat-Aktionen
Aktionen verfügbar imChat-Kontext:
*Unter Windows ohne VT-Modus (Node <24.2.0/<22.17.0, Bun <1.2.23) Standard auf Meta+M.
Autovervollständigungsaktionen
Aktionen verfügbar imAutocomplete-Kontext:
Bestätigungsaktionen
Aktionen verfügbar imConfirmation-Kontext:
*Unter Windows ohne VT-Modus (Node <24.2.0/<22.17.0, Bun <1.2.23) Standard auf Meta+M.
Vor v2.1.257 zeigte eine
confirm:toggleExplanation-Aktion, standardmäßig an Ctrl+E gebunden, eine modellgenerierte Erklärung des Befehls bei Bash- und PowerShell-Berechtigungsaufforderungen.
Dialoge verwenden confirm:yes und confirm:no, um zu akzeptieren und abzubrechen, auch wenn sie keine Ja-oder-Nein-Frage stellen. Wenn Sie einen bloßen Buchstaben wie y oder n in diesem Kontext binden, wirkt sich der Buchstabe auch auf Dialoge aus, die ihn nie als Taste anzeigen. Ein Dialog, der y und n als seine Tasten anzeigt, liest diese Buchstaben selbst und benötigt keine Bindung.
In den meisten Dialogen schließt das Drücken von Ctrl+C oder Ctrl+D zweimal den Dialog, anstatt Claude Code zu beenden. Der Hinweis nach dem ersten Drücken sagt, ob das zweite Drücken den Dialog schließt oder Claude Code beendet. Beide Tasten sind reserviert und können nicht neu gebunden werden.
Dieses Beispiel bindet y an confirm:yes und n an confirm:no:
y und n immer noch als Buchstaben, während ein Textfeld den Fokus hat.
Vor v2.1.280 waren y auch an confirm:yes und n an confirm:no standardmäßig gebunden. Wenn Sie Ihre keybindings.json mit /keybindings vor v2.1.280 erstellt haben, listet die Datei beide Bindungen auf und sie bleiben wirksam, bis Sie diese beiden Zeilen löschen.
Berechtigungsaktionen
Aktionen verfügbar imConfirmation-Kontext für Berechtigungsdialoge:
Transkript-Aktionen
Aktionen verfügbar imTranscript-Kontext:
transcript:toggleShowAll gilt nur im klassischen Renderer; im Vollbildrendering bietet der Transkript-Viewer keine Show-All-Umschaltung.
Verlaufssuch-Aktionen
Aktionen verfügbar imHistorySearch-Kontext:
Die Standards für
historySearch:next, historySearch:accept, historySearch:cancel und historySearch:execute gelten für die Inline-Verlaufssuche im klassischen Renderer, die immer Eingabeaufforderungen aus allen Projekten durchsucht. historySearch:cycleScope wird nur im Vollbildrendering wirksam, wo Ctrl+R stattdessen einen Suchdialog öffnet und Ctrl+S seinen Bereich durchläuft. Die anderen Tasten des Dialogs sind fest und können nicht neu gebunden werden: Enter oder Tab platziert den hervorgehobenen Treffer in der Eingabeaufforderung und Esc bricht ab.
Aufgaben-Aktionen
Aktionen verfügbar imTask-Kontext:
Design-Aktionen
Aktionen verfügbar imThemePicker-Kontext:
Hilfe-Aktionen
Aktionen verfügbar imHelp-Kontext:
Tabs-Aktionen
Aktionen verfügbar imTabs-Kontext:
In einem Tabbed-Dialog wechseln
tabs:next und tabs:previous die Tabs, während die Tab-Zeile den Fokus hat. In einigen Dialogen, wie /help und /sandbox, funktionieren die Tab-Wechsel-Tasten auch von innerhalb des Tab-Inhalts.
Oben und Unten verschieben den Fokus zwischen der Tab-Zeile und dem Tab-Inhalt, und eine Liste im Inhalt reagiert nur auf Tasten, wenn sie den Fokus hat.
Anhänge-Aktionen
Aktionen verfügbar imAttachments-Kontext:
Fußzeilen-Aktionen
Aktionen verfügbar imFooter-Kontext:
Während ein Fußzeilen-Element ausgewählt ist, wie eine Zeile im Agent-Panel unter der Eingabeaufforderung, öffnet
Enter es auch, wenn Sie Enter im Chat-Kontext zu chat:queueSubmit oder chat:newline neu binden.
Chat-Bindungen auf Tasten, die der Footer-Kontext nicht bindet, wie Shift+Tab für chat:cycleMode, funktionieren weiterhin, während ein Element ausgewählt ist.
Nachrichtenauswahl-Aktionen
In der Nachrichtenliste des Rewind-Menüs bewegen Sie sich durch Nachrichten und wählen eine mit den Select-Aktionen und ihren Standardtasten aus. IhreSelect-Bindungen für diese Aktionen gelten auch dort. Der MessageSelector-Kontext hat keine eigenen Aktionen oder Standardbindungen. Verwenden Sie ihn, um einen Schlüssel nur für diese Liste zu ändern, indem Sie eine Select-Aktion wie select:accept in einem MessageSelector-Block binden.
Dieses Beispiel bindet o zum Auswählen der hervorgehobenen Nachricht im Rewind-Menü, ohne andere Listen zu ändern:
Select-Bindungen und hatte ihre eigenen Aktionen: messageSelector:up, messageSelector:down, messageSelector:top, messageSelector:bottom und messageSelector:select. Wenn Ihre keybindings.json einen dieser Namen bindet, bleibt die Bindung in dieser Liste als Select-Aktion wirksam, die dasselbe tut. Home und End springen zu beiden Enden der Liste; vor v2.1.283 taten das Tasten wie Shift+K und Shift+J standardmäßig.
Diff-Aktionen
Aktionen verfügbar imDiffDialog-Kontext:
Die Dateiliste reagiert auch auf die Select-Aktionen, durch ihre Standardtasten und Ihre
Select-Bindungen. select:previous und select:next bewegen sich zur vorherigen und nächsten Datei, und Enter öffnet den Diff der ausgewählten Datei über select:accept. Um einen dieser Schlüssel nur für die Dateiliste zu ändern, binden Sie die Select-Aktion in einem DiffDialog-Block.
Vor v2.1.283 ignorierte die Dateiliste Select-Bindungen, und Enter öffnete den Diff der ausgewählten Datei über eine separate diff:viewDetails-Aktion. Wenn Ihre keybindings.json diff:viewDetails bindet, bleibt die Bindung in der Dateiliste als select:accept wirksam.
Die Diff-Detailansicht bindet auch Pager-ähnliche Tasten an die Standard-Scroll-Aktionen. Diese Bindungen sind Teil des DiffDialog-Kontexts und gelten nur in der Detailansicht; die Scroll-Kontext-Standards, die unter Scroll-Aktionen aufgelistet sind, bleiben unverändert.
Diff-Panel-Aktionen
Aktionen für das Diff-Panel, das/diff im Vollbildrendering öffnet. app:cycleDiffBase ist im DiffPanel-Kontext, der aktiv ist, während das Panel offen ist; die anderen sind Global. Das Panel erfordert Claude Code v2.1.260 oder später.
Modell-Picker-Aktionen
Aktionen verfügbar imModelPicker-Kontext:
Effort-Schieberegler-Aktionen
Aktionen verfügbar imEffortSlider-Kontext, dem Schieberegler, der sich öffnet, wenn Sie /effort ohne Argumente ausführen. Die Tasten Enter und Escape des Schiebereglers können nicht neu gebunden werden.
Select-Aktionen
Aktionen verfügbar imSelect-Kontext:
Claude Code wendet Ihre
select:pageUp-, select:pageDown-, select:first- und select:last-Bindungen in Listenpanels wie /skills und /mcp an. In den meisten anderen Listen, wie dem /model-Picker, gelten Ihre select:first- und select:last-Bindungen. Bild-Auf und Bild-Ab blättern durch die Optionen in diesen Listen unabhängig von Ihren Bindungen.
Vor v2.1.280 ignorierten diese anderen Listen Pos1, Ende und Ihre select:first- und select:last-Bindungen.
Plugin-Aktionen
Aktionen verfügbar imPlugin-Kontext:
Einstellungs-Aktionen
Aktionen verfügbar imSettings-Kontext. Die Aktionen select:accept und confirm:no werden aus den Kontexten Select und Confirmation wiederverwendet mit einstellungsspezifischem Verhalten: Änderungen werden auf jede Einstellung angewendet, sobald Sie sie ändern, daher schließt Escape das Panel mit Ihren gespeicherten Änderungen, anstatt abzulehnen.
Agents-Aktionen
Aktionen verfügbar imAgents-Kontext, der in der Agent-Ansicht gilt, die mit claude agents geöffnet wird. Erfordert v2.1.257 oder später.
Während die Agent-Ansicht offen ist, verwendet Claude Code die
Agents-Bindung für jede Taste, die der Agents-Kontext bindet, und ignoriert eine Chat- oder Global-Bindung auf derselben Taste. Wenn Sie beispielsweise Ctrl+S in der Agent-Ansicht drücken, wird die Sitzungsgruppenbildung gewechselt, anstatt den Standard chat:stash auszulösen.
Die Eingabeverteilung des externen Editors ist keine Agents-Aktion. Die Agent-Ansicht folgt der Chat-Kontext-Bindung chat:externalEditor, Ctrl+G standardmäßig.
Bindungen werden bei einzelnen Tastenanschlägen in der Agent-Ansicht ausgelöst, daher öffnet die Ctrl+X Ctrl+E-Kombination, die an chat:externalEditor gebunden ist, den Editor dort nicht.
Sprach-Aktionen
Aktionen verfügbar imChat-Kontext, wenn Sprachdiktat aktiviert ist:
Scroll-Aktionen
Aktionen verfügbar imScroll-Kontext, wenn Vollbildrendering aktiviert ist:
Tastenkombinations-Syntax
Modifizierer
Verwenden Sie Modifizierer-Tasten mit dem+-Trennzeichen:
ctrlodercontrol- Strg-Tasteshift- Umschalt-Tastealt,opt,optionodermeta- Alt-Taste unter Windows und Linux, Option-Taste unter macOScmd,command,superoderwin- Befehlstaste unter macOS, Windows-Taste unter Windows, Super-Taste unter Linux
cmd-Gruppe wird nur in Terminals erkannt, die den Super-Modifizierer melden, wie z. B. solche, die das Kitty-Tastaturprotokoll oder den modifyOtherKeys-Modus von xterm unterstützen. Die meisten Terminals senden ihn nicht, daher verwenden Sie ctrl oder meta für Bindungen, die überall funktionieren sollen.
Beispiele:
Großbuchstaben
Claude Code analysiert Tastennamen groß- und kleinschreibungsunabhängig, daher istK dieselbe Bindung wie k und ctrl+K ist dasselbe wie ctrl+k. Um Umschalt und einen Buchstaben zu binden, schreiben Sie shift+k.
Nicht-US-Tastaturlayouts
Schreiben Sie die Tastennamen von Strg-Verknüpfungen als lateinische Zeichen, auch wenn Ihr aktives Tastaturlayout andere Zeichen eingibt. Wie Claude Code die Taste, die Sie drücken, mit einer Bindung abgleicht, hängt von der Art des Layouts ab:- Unter einem nicht-lateinischen Layout wie Kyrillisch gleicht Claude Code Strg-Verknüpfungen durch die US-Layout-Position der Taste ab, wenn das Terminal das Kitty-Tastaturprotokoll verwendet und diese Position meldet. In einem solchen Terminal mit aktivem russischem Layout löst das Drücken von Strg und der physischen W-Taste
ctrl+waus. In einem Terminal, das die Position nicht meldet, gleicht Claude Code ab, was das Terminal für den Tastendruck sendet: Ein ASCII-Steuercode löst die lateinische Verknüpfung aus, und ein Tastendruck, der als kyrillisches Zeichen ankommt, entspricht keiner Bindung - Unter Layouts, die lateinische Buchstaben neu anordnen, wie AZERTY, gleicht Claude Code den Buchstaben ab, den die Taste eingibt, daher löst das Drücken von Strg und der mit A beschrifteten Taste
ctrl+aaus
Akkorde
Akkorde sind Sequenzen von Tastenkombinationen, die durch Leerzeichen getrennt sind:Spezielle Tasten
escapeoderesc- Escape-Tasteenteroderreturn- Enter-Tastetab- Tab-Tastespace- Leertasteup,down,left,right- Pfeiltastenpageup,pagedown- Bild-auf- und Bild-ab-Tastenhome,end- Pos1- und Ende-Tastenbackspace,delete- Löschtastenwheelup,wheeldown- Mausrad-Scroll-Ereignisse
Standardkürzel aufheben
Setzen Sie eine Aktion aufnull, um ein Standardkürzel aufzuheben:
ctrl+x-Präfix: ctrl+x ctrl+k, ctrl+x ctrl+e, ctrl+x enter, ctrl+x ctrl+a, ctrl+x ctrl+s und ctrl+x tab in Chat, ctrl+x ctrl+b in Task und ctrl+x b in DiffPanel. Der ctrl+x enter-Akkord erfordert v2.1.247 oder später, ctrl+x b, ctrl+x ctrl+a und ctrl+x tab erfordern v2.1.260 oder später, und ctrl+x ctrl+s erfordert v2.1.275 oder später.
Um ctrl+x selbst als Single-Key-Binding zurückzugewinnen, heben Sie alle auf:
Reservierte Kürzel
Diese Kürzel können nicht neu gebunden werden:Terminal-Konflikte
Einige Kürzel können mit Terminal-Multiplexern in Konflikt geraten:Textfelder
Wenn Sie einen einzelnen Buchstaben, eine Ziffer oder die Leertaste binden, können Sie dieses Zeichen trotzdem in einem Textfeld in einem Dialog oder Panel eingeben. Ein solches Feld ist dieOther-Antwort auf eine Frage, die Claude stellt. Während das Feld den Fokus hat, geht ein druckbares Zeichen, das Sie ohne Strg, Alt oder Cmd drücken, in das Feld, und Claude Code gleicht es nicht gegen Ihre Bindungen ab.
Diese Tasten führen ihre Bindungen aus, während das Feld den Fokus hat:
- Tasten, die kein Zeichen eingeben, wie Eingabe, Escape, Tab und die Pfeiltasten
- Jede Taste, die mit Strg, Alt oder Cmd gedrückt wird
- Der zweite Tastendruck eines Akkords, der bereits läuft
Chat, ab und gibt die Taste nur ein, wenn keine Bindung sie übernimmt.
Vim-Modus-Interaktion
Wenn der Vim-Modus aktiviert ist über/config → Editor-Modus, arbeiten Keybindings und Vim-Modus unabhängig:
- Vim-Modus verarbeitet Eingaben auf der Texteingangsebene (Cursor-Bewegung, Modi, Bewegungen)
- Keybindings verarbeiten Aktionen auf der Komponentenebene (Aufgaben umschalten, senden usw.)
- Die Escape-Taste im Vim-Modus wechselt von INSERT zu NORMAL-Modus; sie löst nicht
chat:cancelaus - Die meisten Ctrl+Taste-Kürzel werden durch den Vim-Modus zum Keybinding-System weitergeleitet
- Vim-Tasten können nicht über die Keybindings-Datei neu zugeordnet werden. Um eine zwei-Tasten-INSERT-Modus-Sequenz wie
jjauf Escape abzubilden, verwenden Sie die EinstellungvimInsertModeRemaps - Im Vim-NORMAL-Modus zeigt
?das Hilfemenü an (Vim-Verhalten) - Im Vim-NORMAL-Modus öffnet
/die Verlaufssuche, dasselbe wie Ctrl+R im Standardmodus
Validierung
Claude Code validiert Ihre Keybindings und zeigt Warnungen für:- Parse-Fehler (ungültiges JSON oder Struktur)
- Ungültige Kontextnamen
- Ungültige Aktionswerte, wie eine Aktion, die keine Zeichenkette oder
nullist - Unbekannte Aktionsnamen, wie ein Tippfehler einer registrierten Aktion. Claude Code überspringt die Bindung und behält alle Standard-Bindungen für diese Taste bei. Vor v2.1.246 deaktivierte eine Bindung mit einem unbekannten Aktionsnamen diese Taste stillschweigend
- Reservierte Kürzel-Konflikte
- Doppelte Bindings im selben Kontext
--debug, um die Details zu sehen.