Configuration, personnalisation, paramètres de plateforme et références API pour Pi.

Raccourcis clavier

Tous les raccourcis clavier peuvent être personnalisés via ~/.pi/agent/keybindings.json. Chaque action peut être liée à une ou plusieurs touches.

Le fichier de configuration utilise les mêmes identifiants de liaison de touches avec espace de noms que pi utilise en interne et que les auteurs d'extensions utilisent dans les gestionnaires keyHint() et keybindings injectés.

Les configurations plus anciennes utilisant des identifiants pré-espaces de noms tels que cursorUp ou expandTools sont automatiquement migrées vers les identifiants avec espace de noms au démarrage.

Après avoir modifié keybindings.json, exécutez /reload dans pi pour appliquer les modifications sans redémarrer la session.

Format de clé

modifier+key où les modificateurs sont ctrl, shift, alt, super (combinables) et les clés sont:

  • Lettres: a-z
  • Chiffres: 0-9
  • Touches spéciales: escape, esc, enter, return, tab, space, backspace, delete, insert, clear, home, end, pageUp, pageDown, up, down, left, right
  • Touches de fonction: f1-f12
  • Symboles: `, -, =, [, ], \, ;, ', ,, ., /, !, @, #, $, %, ^, &, *, (, ), _, +, |, ~, {, }, :, <, >, ?

Combinaisons de modificateurs: ctrl+shift+x, alt+ctrl+x, ctrl+shift+alt+x, super+k, ctrl+super+k, ctrl+1, etc.

Les liaisons super nécessitent un terminal qui signale le modificateur séparément, généralement via le protocole du clavier Kitty. Ils pourraient ne pas fonctionner dans les terminaux sans ce support.

Toutes les actions

TUI Mouvement du curseur de l'éditeur

ID de liaison de clé Défaut Description
tui.editor.cursorUp up Déplacez le curseur vers le haut et parcourez l'historique plus ancien en haut
tui.editor.cursorDown down Déplacez le curseur vers le bas et parcourez l'historique le plus récent en bas.
tui.editor.historyPrevious (aucun) Sélectionnez l'entrée précédente de l'historique des invites
tui.editor.historyNext (aucun) Sélectionnez la prochaine entrée de l'historique des invites
tui.editor.cursorLeft left, ctrl+b Déplacer le curseur vers la gauche
tui.editor.cursorRight right, ctrl+f Déplacer le curseur vers la droite
tui.editor.cursorWordLeft alt+left, ctrl+left, alt+b Déplacer le mot curseur vers la gauche
tui.editor.cursorWordRight alt+right, ctrl+right, alt+f Déplacer le mot curseur vers la droite
tui.editor.cursorLineStart home, ctrl+home, ctrl+a Passer au début de la ligne
tui.editor.cursorLineEnd end, ctrl+end, ctrl+e Passer à la fin de la ligne
tui.editor.jumpForward ctrl+] Avancer vers le personnage
tui.editor.jumpBackward ctrl+alt+] Revenir en arrière jusqu'au personnage
tui.editor.pageUp pageUp, ctrl+pageUp Faire défiler la page vers le haut
tui.editor.pageDown pageDown, ctrl+pageDown Faites défiler par page

Les actions d'historique dédiées modifient toujours les entrées de l'historique, quelle que soit la position du curseur dans une invite multiligne. Les liaisons d'historique explicites ont priorité sur les actions de l'application lorsque l'éditeur principal est ciblé, donc la liaison de tui.editor.historyPrevious à ctrl+p remplace le cycle de modèle dans ce contexte sans modifier Ctrl+P dans les sélecteurs.

TUI Suppression de l'éditeur

ID de liaison de clé Défaut Description
tui.editor.deleteCharBackward backspace Supprimer un caractère vers l'arrière
tui.editor.deleteCharForward delete, ctrl+d Supprimer le caractère vers l'avant
tui.editor.deleteWordBackward ctrl+w, alt+backspace Supprimer le mot à l'envers
tui.editor.deleteWordForward alt+d, alt+delete Supprimer le mot en avant
tui.editor.deleteToLineStart ctrl+u Supprimer au début de la ligne
tui.editor.deleteToLineEnd ctrl+k Supprimer jusqu'à la fin de la ligne

TUI Entrée

ID de liaison de clé Défaut Description
tui.input.newLine shift+enter, ctrl+j Insérer une nouvelle ligne
tui.input.submit enter Soumettre la contribution
tui.input.tab tab Onglet / saisie semi-automatique

TUI Tuer l'anneau

ID de liaison de clé Défaut Description
tui.editor.yank ctrl+y Coller le texte le plus récemment supprimé
tui.editor.yankPop alt+y Parcourez le texte supprimé après un coup sec
tui.editor.undo ctrl+- Annuler la dernière modification

TUI Presse-papiers et sélection

ID de liaison de clé Défaut Description
tui.input.copy ctrl+c Copier la sélection
tui.select.up up Déplacer la sélection vers le haut
tui.select.down down Déplacer la sélection vers le bas
tui.select.pageUp pageUp Page précédente dans la liste
tui.select.pageDown pageDown Page suivante dans la liste
tui.select.confirm enter Confirmer la sélection
tui.select.cancel escape, ctrl+c Annuler la sélection

TUI Fenêtre plein écran

Ces actions s'appliquent lorsque le mode interactif utilise --tui-mode fullscreen et cible la région de défilement de transcription principale. Le trackpad à deux doigts et la molette de la souris font défiler la région sous le pointeur, en revenant à la transcription sur le dock fixe éditeur/statut/pied de page. Cliquer sur un lien hypertexte OSC 8 l'ouvre dans le gestionnaire par défaut. Faire glisser avec le bouton principal de la souris sélectionne le texte et le copie dans le presse-papiers; en maintenant le bord supérieur ou inférieur de la transcription, vous faites défiler automatiquement le contenu hors écran.

Les liaisons de transcription plein écran ont priorité sur les liaisons de l'éditeur. Les touches de navigation par défaut non modifiées contrôlent donc la transcription en mode plein écran, tandis que leurs variantes ctrl continuent de contrôler l'éditeur. En dehors du mode plein écran, les deux variantes contrôlent l'éditeur.

Clé Mode par défaut Mode plein écran
home, end Éditeur Transcription
ctrl+home, ctrl+end Éditeur Éditeur
pageUp, pageDown Éditeur Transcription
ctrl+pageUp, ctrl+pageDown Éditeur Éditeur

Ce routage reste configurable via les liaisons d'actions ordinaires. Par exemple, "tui.altScreen.pageUp": "ctrl+pageUp" permet à pageUp de contrôler l'éditeur et à ctrl+pageUp de contrôler la transcription en mode plein écran. Liez tui.altScreen.halfPageUp et tui.altScreen.halfPageDown pour des étapes de transcription plus petites tout en conservant les liaisons pleine page. Le paramètre "tui.altScreen.pageUp": [] désactive entièrement ce raccourci de transcription. Les liaisons utilisateur remplacent les valeurs par défaut pour cette action.

ID de liaison de clé Défaut Description
tui.altScreen.pageUp pageUp Faites défiler la transcription d'une page vers le haut
tui.altScreen.pageDown pageDown Faites défiler la transcription d'une page vers le bas
tui.altScreen.halfPageUp (aucun) Faites défiler la transcription d'une demi-page vers le haut
tui.altScreen.halfPageDown (aucun) Faites défiler la transcription d'une demi-page vers le bas
tui.altScreen.previousPrompt ctrl+shift+up Passer au message marqué précédent
tui.altScreen.nextPrompt ctrl+shift+down Passer au message marqué suivant
tui.altScreen.top home Faites défiler jusqu'au début de la transcription
tui.altScreen.bottom end Faites défiler jusqu'à la fin de la transcription et suivez la nouvelle sortie

Application

ID de liaison de clé Défaut Description
app.interrupt escape Annuler / abandonner
app.clear ctrl+c Effacer l'éditeur (premier) / quitter (deuxième)
app.exit ctrl+d Quitter (quand l'éditeur est vide)
app.suspend ctrl+z (aucun sous Windows) Suspendre en arrière-plan
app.editor.external ctrl+g Ouvrir dans un éditeur externe (externalEditor, $VISUAL, $EDITOR, Bloc-notes sous Windows ou nano ailleurs)
app.clipboard.pasteImage ctrl+v (alt+v sous Windows) Coller une image ou du texte à partir du presse-papiers

Séances

ID de liaison de clé Défaut Description
app.session.new (aucun) Démarrer une nouvelle session (/new)
app.session.tree (aucun) Ouvrez le navigateur session tree (/tree)
app.session.fork (aucun) Session en cours de fourche (/fork)
app.session.resume (aucun) Sélecteur de CV de session ouverte (/resume)
app.session.togglePath ctrl+p Basculer l'affichage du chemin
app.session.toggleSort ctrl+s Basculer le mode de tri
app.session.toggleNamedFilter ctrl+n Activer/désactiver le filtre nommé uniquement
app.session.rename ctrl+r Renommer la session
app.session.delete ctrl+d Supprimer la séance
app.session.deleteNoninvasive ctrl+backspace Supprimer la session lorsque la requête est vide

Models et réflexion

ID de liaison de clé Défaut Description
app.model.select ctrl+l Ouvrir le sélecteur de modèle
app.model.cycleForward ctrl+p Passer au modèle suivant
app.model.cycleBackward shift+ctrl+p Passer au modèle précédent
app.thinking.cycle shift+tab Niveau de réflexion cyclique
app.thinking.toggle ctrl+t Réduire ou développer les blocs de réflexion

Affichage et file d'attente des messages

ID de liaison de clé Défaut Description
app.tools.expand ctrl+o Réduire ou développer la sortie de l'outil
app.message.copy ctrl+x Copiez le dernier message de l'assistant ou le message sélectionné dans /tree
app.message.followUp alt+enter Message de suivi de file d'attente
app.message.dequeue alt+up Restaurer les messages en file d'attente dans l'éditeur
ID de liaison de clé Défaut Description
app.tree.foldOrUp ctrl+left, alt+left Pliez le segment de branche actuel ou passez au début du segment précédent
app.tree.unfoldOrDown ctrl+right, alt+right Dépliez le segment de branche actuel ou passez au début ou à la fin du segment suivant.
app.tree.editLabel shift+l Modifier l'étiquette sur le nœud d'arborescence sélectionné
app.tree.toggleLabelTimestamp shift+t Basculer les horodatages des étiquettes dans l'arborescence
app.tree.filter.default ctrl+d Définir le filtre d'arborescence sur la vue par défaut
app.tree.filter.noTools ctrl+t Activer le filtre d'arborescence qui masque les résultats des outils
app.tree.filter.userOnly ctrl+u Basculer le filtre d'arborescence qui affiche uniquement les messages des utilisateurs
app.tree.filter.labeledOnly ctrl+l Basculer le filtre d'arborescence qui affiche uniquement les entrées étiquetées
app.tree.filter.all ctrl+a Basculer le filtre d'arborescence qui affiche toutes les entrées
app.tree.filter.cycleForward ctrl+o Filtrer l'arborescence en avant
app.tree.filter.cycleBackward shift+ctrl+o Filtrer l'arborescence en arrière

Sélecteur de portée Models

Utilisé dans le sélecteur de modèles étendus (ouvert via /scoped-models).

ID de liaison de clé Défaut Description
app.models.save ctrl+s Enregistrer la sélection actuelle du modèle dans les paramètres
app.models.enableAll ctrl+a Activer tous les modèles (ou tous correspondant à la recherche en cours)
app.models.clearAll ctrl+x Effacer tous les modèles (ou tous correspondant à la recherche en cours)
app.models.toggleProvider ctrl+p Basculer tous les modèles pour le fournisseur actuel
app.models.reorderUp alt+up Déplacer le modèle sélectionné vers le haut dans l'ordre du cycle
app.models.reorderDown alt+down Déplacer le modèle sélectionné vers le bas dans l'ordre du cycle

Configuration personnalisée

Créez ~/.pi/agent/keybindings.json:

{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.editor.historyNext": "ctrl+n",
  "tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
}

Chaque action peut avoir une seule clé ou un tableau de clés. La configuration utilisateur remplace les valeurs par défaut.

Sous Windows natif, app.suspend n'a pas de liaison par défaut car les terminaux Windows ne prennent pas en charge le contrôle des tâches Unix. Si vous le liez manuellement, pi affiche un message d'état au lieu de le suspendre. Dans WSL, le comportement normal de Linux ctrl+z/fg s'applique toujours.

Exemple Emacs

{
  "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"]
}

Exemple Vim

{
  "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"]
}