Tastenkombinationen
Alle Tastaturkürzel können über ~/.pi/agent/keybindings.json angepasst werden. Jede Aktion kann an einen oder mehrere Schlüssel gebunden werden.
Die Konfigurationsdatei verwendet dieselben namespaced-Tastenkombinations-IDs, die pi intern verwendet und die Erweiterungsautoren in keyHint()- und injizierten keybindings-Managern verwenden.
Ältere Konfigurationen, die vorab benannte IDs wie cursorUp oder expandTools verwenden, werden beim Start automatisch auf die benannten IDs migriert.
Nachdem Sie keybindings.json bearbeitet haben, führen Sie /reload in pi aus, um die Änderungen zu übernehmen, ohne die Sitzung neu zu starten.
Schlüsselformat
modifier+key wobei Modifikatoren ctrl, shift, alt, super (kombinierbar) und Schlüssel sind:
- Buchstaben:
a-z - Ziffern:
0-9 - Sondertasten:
escape,esc,enter,return,tab,space,backspace,delete,insert,clear,home,end,pageUp,pageDown,up,down,left,right - Funktionstasten:
f1-f12 - Symbole:
`,-,=,[,],\,;,',,,.,/,!,@,#,$,%,^,&,*,(,),_,+,|,~,{,},:,<,>,?
Modifikatorkombinationen: ctrl+shift+x, alt+ctrl+x, ctrl+shift+alt+x, super+k, ctrl+super+k, ctrl+1 usw.
super-Bindungen erfordern ein Terminal, das den Modifikator separat meldet, normalerweise über das Kitty-Tastaturprotokoll. Ohne diese Unterstützung funktionieren sie möglicherweise nicht in Terminals.
Alle Aktionen
TUI Bewegung des Editor-Cursors
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
tui.editor.cursorUp |
up |
Bewegen Sie den Cursor nach oben und durchsuchen Sie oben den älteren Verlauf |
tui.editor.cursorDown |
down |
Bewegen Sie den Cursor nach unten und durchsuchen Sie unten den neueren Verlauf |
tui.editor.historyPrevious |
(keiner) | Wählen Sie den vorherigen Eintrag im Eingabeaufforderungsverlauf aus |
tui.editor.historyNext |
(keiner) | Wählen Sie den nächsten Eingabeaufforderungsverlaufseintrag aus |
tui.editor.cursorLeft |
left, ctrl+b |
Cursor nach links bewegen |
tui.editor.cursorRight |
right, ctrl+f |
Cursor nach rechts bewegen |
tui.editor.cursorWordLeft |
alt+left, ctrl+left, alt+b |
Bewegen Sie das Cursorwort nach links |
tui.editor.cursorWordRight |
alt+right, ctrl+right, alt+f |
Cursorwort nach rechts bewegen |
tui.editor.cursorLineStart |
home, ctrl+home, ctrl+a |
Zum Zeilenanfang wechseln |
tui.editor.cursorLineEnd |
end, ctrl+end, ctrl+e |
Zum Zeilenende wechseln |
tui.editor.jumpForward |
ctrl+] |
Springe vorwärts zum Charakter |
tui.editor.jumpBackward |
ctrl+alt+] |
Springe zurück zum Charakter |
tui.editor.pageUp |
pageUp, ctrl+pageUp |
Scrollen Sie seitenweise nach oben |
tui.editor.pageDown |
pageDown, ctrl+pageDown |
Scrollen Sie seitenweise nach unten |
Die dedizierten Verlaufsaktionen ändern stets Verlaufseinträge, unabhängig von der Cursorposition in einer mehrzeiligen Eingabeaufforderung. Explizite Verlaufsbindungen haben Vorrang vor Anwendungsaktionen, während der Haupteditor fokussiert ist. Die Bindung von tui.editor.historyPrevious an ctrl+p überschreibt also den Modellwechsel in diesem Kontext, ohne Ctrl+P in Selektoren zu ändern.
TUI Editor-Löschung
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
tui.editor.deleteCharBackward |
backspace |
Zeichen rückwärts löschen |
tui.editor.deleteCharForward |
delete, ctrl+d |
Zeichen vorwärts löschen |
tui.editor.deleteWordBackward |
ctrl+w, alt+backspace |
Wort rückwärts löschen |
tui.editor.deleteWordForward |
alt+d, alt+delete |
Wort vorwärts löschen |
tui.editor.deleteToLineStart |
ctrl+u |
Bis zum Zeilenanfang löschen |
tui.editor.deleteToLineEnd |
ctrl+k |
Bis zum Zeilenende löschen |
TUI Eingabe
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
tui.input.newLine |
shift+enter, ctrl+j |
Neue Zeile einfügen |
tui.input.submit |
enter |
Eingabe abschicken |
tui.input.tab |
tab |
Tab / Autovervollständigung |
TUI Ring töten
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
tui.editor.yank |
ctrl+y |
Fügen Sie den zuletzt gelöschten Text ein |
tui.editor.yankPop |
alt+y |
Nach dem Ziehen durch den gelöschten Text blättern |
tui.editor.undo |
ctrl+- |
Letzte Bearbeitung rückgängig machen |
TUI Zwischenablage und Auswahl
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
tui.input.copy |
ctrl+c |
Auswahl kopieren |
tui.select.up |
up |
Auswahl nach oben verschieben |
tui.select.down |
down |
Auswahl nach unten verschieben |
tui.select.pageUp |
pageUp |
Seite nach oben in der Liste |
tui.select.pageDown |
pageDown |
Seite nach unten in der Liste |
tui.select.confirm |
enter |
Auswahl bestätigen |
tui.select.cancel |
escape, ctrl+c |
Auswahl abbrechen |
TUI Vollbild-Ansichtsfenster
Diese Aktionen gelten, wenn der interaktive Modus --tui-mode fullscreen verwendet und auf den primären Transkript-Bildlaufbereich abzielt. Mit der Zwei-Finger-Trackpad- und Mausrad-Eingabe scrollen Sie durch den Bereich unter dem Zeiger und kehren zum Transkript über dem festen Editor-/Status-/Fußzeilen-Dock zurück. Wenn Sie auf einen OSC 8-Hyperlink klicken, wird dieser im Standardhandler geöffnet. Durch Ziehen mit der primären Maustaste wird Text ausgewählt und in die Zwischenablage kopiert. Wenn Sie den oberen oder unteren Rand des Transkripts gedrückt halten, wird automatisch in den Off-Screen-Inhalt gescrollt.
Vollbild-Transkriptbindungen haben Vorrang vor Editorbindungen. Die standardmäßigen unveränderten Navigationstasten steuern daher das Transkript im Vollbildmodus, während ihre ctrl-Varianten weiterhin den Editor steuern. Außerhalb des Vollbildmodus steuern beide Varianten den Editor.
| Schlüssel | Standardmodus | Vollbildmodus |
|---|---|---|
home, end |
Editor | Transkript |
ctrl+home, ctrl+end |
Editor | Editor |
pageUp, pageDown |
Editor | Transkript |
ctrl+pageUp, ctrl+pageDown |
Editor | Editor |
Dieses Routing bleibt über die normalen Aktionsbindungen konfigurierbar. Beispielsweise steuert "tui.altScreen.pageUp": "ctrl+pageUp" pageUp den Editor und ctrl+pageUp das Transkript im Vollbildmodus. Binden Sie tui.altScreen.halfPageUp und tui.altScreen.halfPageDown für kleinere Transkriptschritte und behalten Sie dabei die ganzseitigen Bindungen bei. Durch die Einstellung "tui.altScreen.pageUp": [] wird diese Transkriptverknüpfung vollständig deaktiviert. Benutzerbindungen ersetzen die Standardeinstellungen für diese Aktion.
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
tui.altScreen.pageUp |
pageUp |
Scrollen Sie im Transkript eine Seite nach oben |
tui.altScreen.pageDown |
pageDown |
Scrollen Sie im Transkript eine Seite nach unten |
tui.altScreen.halfPageUp |
(keiner) | Scrollen Sie im Transkript eine halbe Seite nach oben |
tui.altScreen.halfPageDown |
(keiner) | Scrollen Sie im Transkript eine halbe Seite nach unten |
tui.altScreen.previousPrompt |
ctrl+shift+up |
Zur zuvor markierten Nachricht springen |
tui.altScreen.nextPrompt |
ctrl+shift+down |
Zur nächsten markierten Nachricht springen |
tui.altScreen.top |
home |
Scrollen Sie zum Anfang des Transkripts |
tui.altScreen.bottom |
end |
Scrollen Sie zum Ende des Transkripts und folgen Sie der neuen Ausgabe |
Anwendung
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
app.interrupt |
escape |
Abbrechen / Abbruch |
app.clear |
ctrl+c |
Editor löschen (erster) / Beenden (zweiter) |
app.exit |
ctrl+d |
Beenden (wenn der Editor leer ist) |
app.suspend |
ctrl+z (keine unter Windows) |
Im Hintergrund anhalten |
app.editor.external |
ctrl+g |
Im externen Editor öffnen (externalEditor, $VISUAL, $EDITOR, Notepad unter Windows oder nano anderswo) |
app.clipboard.pasteImage |
ctrl+v (alt+v unter Windows) |
Bild oder Text aus der Zwischenablage einfügen |
Sitzungen
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
app.session.new |
(keiner) | Starten Sie eine neue Sitzung (/new) |
app.session.tree |
(keiner) | session tree Navigator öffnen (/tree) |
app.session.fork |
(keiner) | Aktuelle Sitzung verzweigen (/fork) |
app.session.resume |
(keiner) | Sitzungs-Lebenslauf-Auswahl öffnen (/resume) |
app.session.togglePath |
ctrl+p |
Pfadanzeige umschalten |
app.session.toggleSort |
ctrl+s |
Sortiermodus umschalten |
app.session.toggleNamedFilter |
ctrl+n |
Schalten Sie den Nur-Namen-Filter um |
app.session.rename |
ctrl+r |
Sitzung umbenennen |
app.session.delete |
ctrl+d |
Sitzung löschen |
app.session.deleteNoninvasive |
ctrl+backspace |
Sitzung löschen, wenn die Abfrage leer ist |
Models und Denken
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
app.model.select |
ctrl+l |
Modellauswahl öffnen |
app.model.cycleForward |
ctrl+p |
Wechseln Sie zum nächsten Modell |
app.model.cycleBackward |
shift+ctrl+p |
Wechseln Sie zum vorherigen Modell |
app.thinking.cycle |
shift+tab |
Zyklus-Denkebene |
app.thinking.toggle |
ctrl+t |
Denkblockaden abbauen oder erweitern |
Anzeige und Nachrichtenwarteschlange
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
app.tools.expand |
ctrl+o |
Reduzieren oder erweitern Sie die Werkzeugausgabe |
app.message.copy |
ctrl+x |
Kopieren Sie die letzte Assistentennachricht oder die ausgewählte Nachricht in /tree |
app.message.followUp |
alt+enter |
Folgenachricht in der Warteschlange |
app.message.dequeue |
alt+up |
Stellen Sie Nachrichten in der Warteschlange im Editor wieder her |
Baumnavigation
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
app.tree.foldOrUp |
ctrl+left, alt+left |
Aktuelles Zweigsegment falten oder zum vorherigen Segmentanfang springen |
app.tree.unfoldOrDown |
ctrl+right, alt+right |
Klappen Sie das aktuelle Zweigsegment auf oder springen Sie zum nächsten Segmentanfang oder Zweigende |
app.tree.editLabel |
shift+l |
Bearbeiten Sie die Beschriftung des ausgewählten Baumknotens |
app.tree.toggleLabelTimestamp |
shift+t |
Schalten Sie die Label-Zeitstempel in der Baumstruktur um |
app.tree.filter.default |
ctrl+d |
Stellen Sie den Baumfilter auf die Standardansicht ein |
app.tree.filter.noTools |
ctrl+t |
Schalten Sie den Baumfilter um, der die Werkzeugergebnisse ausblendet |
app.tree.filter.userOnly |
ctrl+u |
Schalten Sie den Baumfilter um, der nur Benutzernachrichten anzeigt |
app.tree.filter.labeledOnly |
ctrl+l |
Schalten Sie den Baumfilter um, der nur beschriftete Einträge anzeigt |
app.tree.filter.all |
ctrl+a |
Baumfilter umschalten, der alle Einträge anzeigt |
app.tree.filter.cycleForward |
ctrl+o |
Zyklusbaumfilter vorwärts |
app.tree.filter.cycleBackward |
shift+ctrl+o |
Zyklusbaumfilter rückwärts |
Bereichsbezogener Models-Selektor
Wird in der Modellauswahl mit Gültigkeitsbereich verwendet (geöffnet über /scoped-models).
| Tastenkombinations-ID | Standard | Beschreibung |
|---|---|---|
app.models.save |
ctrl+s |
Aktuelle Modellauswahl in den Einstellungen speichern |
app.models.enableAll |
ctrl+a |
Alle Modelle aktivieren (oder alle, die der aktuellen Suche entsprechen) |
app.models.clearAll |
ctrl+x |
Alle Modelle löschen (oder alle, die der aktuellen Suche entsprechen) |
app.models.toggleProvider |
ctrl+p |
Alle Modelle für den aktuellen Anbieter umschalten |
app.models.reorderUp |
alt+up |
Verschiebt das ausgewählte Modell in der Zyklusreihenfolge nach oben |
app.models.reorderDown |
alt+down |
Verschiebt das ausgewählte Modell in der Zyklusreihenfolge nach unten |
Benutzerdefinierte Konfiguration
Erstellen Sie ~/.pi/agent/keybindings.json:
{
"tui.editor.historyPrevious": "ctrl+p",
"tui.editor.historyNext": "ctrl+n",
"tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
}Jede Aktion kann einen einzelnen Schlüssel oder eine Reihe von Schlüsseln haben. Die Benutzerkonfiguration überschreibt die Standardeinstellungen.
Unter nativem Windows verfügt app.suspend über keine Standardbindung, da Windows-Terminals die Unix-Jobsteuerung nicht unterstützen. Wenn Sie es manuell binden, zeigt Pi eine Statusmeldung an, anstatt es anzuhalten. In der WSL gilt weiterhin das normale Linux ctrl+z/fg-Verhalten.
Emacs-Beispiel
{
"tui.editor.historyPrevious": "ctrl+p",
"tui.editor.historyNext": "ctrl+n",
"tui.editor.cursorLeft": ["left", "ctrl+b"],
"tui.editor.cursorRight": ["right", "ctrl+f"],
"tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
"tui.editor.cursorWordRight": ["alt+right", "alt+f"],
"tui.editor.deleteCharForward": ["delete", "ctrl+d"],
"tui.editor.deleteCharBackward": ["backspace", "ctrl+h"],
"tui.input.newLine": ["shift+enter", "ctrl+j"]
}Vim-Beispiel
{
"tui.editor.cursorUp": ["up", "alt+k"],
"tui.editor.cursorDown": ["down", "alt+j"],
"tui.editor.cursorLeft": ["left", "alt+h"],
"tui.editor.cursorRight": ["right", "alt+l"],
"tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
"tui.editor.cursorWordRight": ["alt+right", "alt+w"]
}