Configuration des raccourcis clavier d'OpenCode expliquée

OpenCode fournit un système complet de raccourcis clavier, couvrant diverses opérations telles que le contrôle de l'application, la gestion des sessions, la navigation dans les messages, le changement de modèle et l'édition de la saisie.

Tous les raccourcis clavier peuvent être personnalisés via letui.jsonfichier.


Fichier de configuration

Les configurations des raccourcis clavier sont écrites sous letui.jsonchamp dukeybindsfichier. Le nom de clé de chaque enregistrement est le nom de l'opération, et la valeur est le raccourci clavier correspondant :

Exemple

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
"leader": "ctrl+x", // Paramètre de la touche leader (voir explication ci-dessous)
"session_new": "<leader>n", // Nouvelle session : appuyez sur la touche leader, puis sur n
"model_list": "<leader>m", // Ouvrir la liste des modèles : appuyez sur la touche leader, puis sur m
"session_compact": "none" // Définissez la valeur sur "none" pour désactiver ce raccourci
  }
}

Une opération peut être liée à plusieurs raccourcis clavier, séparés par des virgules. Le déclenchement de l'un d'eux exécutera l'opération :

Exemple

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
// La notation suivante signifie : appuyer sur pageup ou ctrl+alt+b fera défiler d'une page vers le haut
    "messages_page_up": "pageup,ctrl+alt+b"
  }
}

Touche Leader

La plupart des raccourcis clavier d'OpenCode utilisent le mécanisme deTouche Leader: appuyez d'abord sur la touche leader, puis sur la touche de fonction, et la combinaison des deux touches déclenche l'opération correspondante. L'avantage de cette conception est d'éviter les conflits avec les raccourcis clavier propres au terminal.

La touche leader par défaut estctrl+x. Par exemple, le raccourci pour créer une nouvelle session est<leader>n, et l'opération réelle est : appuyez d'abord surctrl+x, puis appuyez surn。

Vous pouvez changer la touche leader pour n'importe quelle combinaison de touches :

Exemple

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
"leader": "ctrl+x" // Changez la touche leader pour une autre touche, telle que "ctrl+space", "alt+x", etc.
// L'espace réservé <leader> dans la configuration sera automatiquement remplacé par la touche définie ici
  }
}

Vous n'êtes pas obligé d'utiliser le mécanisme de touche leader pour définir des raccourcis clavier — vous pouvez aussi lier directement des touches normales ou des combinaisons de touches. Cependant, il est recommandé de privilégier la touche leader pour éviter les conflits avec les raccourcis du terminal.


Désactivation des raccourcis clavier

Définir la valeur de n'importe quel raccourci clavier à"none"pour désactiver cette opération. Après désactivation, appuyer sur n'importe quelle touche ne la déclenchera pas :

Exemple

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
"session_compact": "none", // Désactiver le raccourci "compact session"
"scrollbar_toggle": "none", // Désactiver le raccourci "toggle scrollbar"
"tips_toggle": "none" // Désactiver le raccourci "toggle tips"
  }
}

Liste complète des raccourcis clavier

1. Application et interface

Nom de l'opération Raccourci par défaut Description
app_exit ctrl+c, ctrl+d, <leader>q Quitter OpenCode
editor_open <leader>e Ouvrir le contenu de la saisie actuelle avec un éditeur externe
theme_list <leader>t Ouvrir la liste des thèmes et changer le thème de l'interface
sidebar_toggle <leader>b Afficher ou masquer la barre latérale
scrollbar_toggle Aucun (désactivé par défaut) Afficher ou masquer la barre de défilement
username_toggle Aucun (désactivé par défaut) Afficher ou masquer le nom d'utilisateur
status_view <leader>s Afficher les informations sur l'état actuel
tool_details Aucun (désactivé par défaut) Voir les détails des appels d'outils
command_list ctrl+p Ouvrir la palette de commandes et rechercher toutes les commandes disponibles
tips_toggle <leader>h Afficher ou masquer les astuces d'utilisation
display_thinking Aucun (désactivé par défaut) Afficher ou masquer le processus de réflexion du modèle
terminal_suspend ctrl+z Suspendre le terminal (mettre OpenCode en arrière-plan et revenir au shell ; tapezfgpour reprendre)
terminal_title_toggle Aucun (désactivé par défaut) Afficher ou masquer la barre de titre du terminal

2. Gestion des sessions

Nom de l'opération Raccourci par défaut Description
session_new <leader>n Créer une nouvelle session
session_list <leader>l Afficher toutes les listes de sessions historiques
session_export <leader>x Exporter le contenu de la session actuelle
session_timeline <leader>g Afficher la chronologie de la session actuelle
session_fork Aucun (désactivé par défaut) Créer une session de branche à partir de la position actuelle
session_rename Aucun (désactivé par défaut) Renommer la session actuelle
session_share Aucun (désactivé par défaut) Partager la session actuelle
session_unshare Aucun (désactivé par défaut) Annuler le partage de la session actuelle
session_interrupt escape Interrompre la réponse en cours d'exécution
session_compact <leader>c Compacter le contexte de la session actuelle pour réduire l'utilisation de jetons
session_child_first <leader>↓ Aller à la première session enfant
session_child_cycle <leader>→ Parcourir les sessions enfant vers l'avant
session_child_cycle_reverse <leader>← Parcourir les sessions enfant vers l'arrière
session_parent <leader>↑ Revenir à la session parente

3. Navigation dans les messages

Nom de l'opération Raccourci par défaut Description
messages_page_up pageup, ctrl+alt+b Faire défiler les messages d'une page vers le haut
messages_page_down pagedown, ctrl+alt+f Faire défiler les messages d'une page vers le bas
messages_line_up ctrl+alt+y Faire défiler d'une ligne vers le haut
messages_line_down ctrl+alt+e Faire défiler d'une ligne vers le bas
messages_half_page_up ctrl+alt+u Faire défiler d'une demi-page vers le haut
messages_half_page_down ctrl+alt+d Faire défiler d'une demi-page vers le bas
messages_first ctrl+g, home Aller au premier message le plus ancien
messages_last ctrl+alt+g, end Aller au dernier message le plus récent
messages_next Aucun (désactivé par défaut) Aller au message suivant
messages_previous Aucun (désactivé par défaut) Aller au message précédent
messages_last_user Aucun (désactivé par défaut) Aller au dernier message de l'utilisateur
messages_copy <leader>y Copier le contenu du message actuel dans le presse-papiers
messages_undo <leader>u Annuler la dernière opération
messages_redo <leader>r Rétablir l'opération annulée
messages_toggle_conceal <leader>h Réduire ou développer le contenu masqué dans les messages

4. Modèles & Agents

Nom de l'opération Raccourci par défaut Description
model_list <leader>m Ouvrir la liste des modèles pour sélectionner et changer le modèle utilisé actuellement
model_cycle_recent f2 Parcourir vers l'avant les modèles récemment utilisés
model_cycle_recent_reverse shift+f2 Parcourir vers l'arrière les modèles récemment utilisés
model_cycle_favorite Aucun (désactivé par défaut) Parcourir vers l'avant les modèles favoris
model_cycle_favorite_reverse Aucun (désactivé par défaut) Parcourir les modèles favoris vers l'arrière
variant_cycle ctrl+t Parcourir les variantes du modèle actuel (comme le mode de réflexion)
agent_list <leader>a Ouvrir la liste des agents pour sélectionner et changer l'agent actuellement utilisé
agent_cycle tab Parcourir les agents vers l'avant
agent_cycle_reverse shift+tab Parcourir les agents vers l'arrière

5. Édition de la zone de saisie

Nom de l'opération Raccourci par défaut Description
input_submit return Envoyer le contenu de saisie actuel
input_newline shift+return, ctrl+return, alt+return, ctrl+j Insérer un saut de ligne dans la zone de saisie (sans envoyer)
input_clear ctrl+c Effacer le contenu de la zone de saisie
input_paste ctrl+v Coller le contenu du presse-papiers dans la zone de saisie
input_move_left left, ctrl+b Déplacer le curseur d'un caractère vers la gauche
input_move_right right, ctrl+f Déplacer le curseur d'un caractère vers la droite
input_move_up up Déplacer le curseur d'une ligne vers le haut
input_move_down down Déplacer le curseur d'une ligne vers le bas
input_word_forward alt+f, alt+right, ctrl+right Déplacer le curseur d’un mot vers l’avant
input_word_backward alt+b, alt+left, ctrl+left Déplacer le curseur d’un mot vers l’arrière
input_line_home ctrl+a Déplacer au début de la ligne actuelle
input_line_end ctrl+e Déplacer à la fin de la ligne actuelle
input_visual_line_home alt+a Déplacer au début de la ligne visuelle actuelle (la ligne telle qu’affichée après retour à la ligne automatique)
input_visual_line_end alt+e Déplacer à la fin de la ligne visuelle actuelle
input_buffer_home home Aller au tout début du contenu entier de la zone de saisie
input_buffer_end end Aller à la toute fin du contenu entier de la zone de saisie
input_delete_to_line_end ctrl+k Supprimer tout le contenu du curseur jusqu’à la fin de la ligne actuelle
input_delete_to_line_start ctrl+u Supprimer tout le contenu du début de la ligne actuelle jusqu’au curseur
input_delete_line ctrl+shift+d Supprimer toute la ligne où se trouve le curseur
input_backspace backspace, shift+backspace Supprimer le caractère avant le curseur
input_delete ctrl+d, delete, shift+delete Supprimer le caractère après le curseur
input_delete_word_forward alt+d, alt+delete, ctrl+delete Supprimer le mot après le curseur
input_delete_word_backward ctrl+w, ctrl+backspace, alt+backspace Supprimer le mot avant le curseur
input_undo ctrl+-, super+z Annuler la dernière modification dans la zone de saisie
input_redo ctrl+., super+shift+z Rétablir la modification annulée

6. Sélection de texte

Nom de l'opération Raccourci par défaut Description
input_select_left shift+left Sélectionner un caractère vers la gauche
input_select_right shift+right Sélectionner un caractère vers la droite
input_select_up shift+up Sélectionner une ligne vers le haut
input_select_down shift+down Sélectionner une ligne vers le bas
input_select_word_forward alt+shift+f, alt+shift+right Sélectionner un mot vers l'avant
input_select_word_backward alt+shift+b, alt+shift+left Sélectionner un mot vers l'arrière
input_select_line_home ctrl+shift+a Sélectionner de la position du curseur jusqu'au début de la ligne actuelle
input_select_line_end ctrl+shift+e Sélectionner de la position du curseur jusqu'à la fin de la ligne actuelle
input_select_visual_line_home alt+shift+a Sélectionner de la position du curseur jusqu'au début de la ligne visuelle actuelle
input_select_visual_line_end alt+shift+e Sélectionner de la position du curseur jusqu'à la fin de la ligne visuelle actuelle
input_select_buffer_home shift+home Sélectionner de la position du curseur jusqu'au tout début du champ de saisie
input_select_buffer_end shift+end Sélectionner de la position du curseur jusqu'à la toute fin du champ de saisie

7. Historique de saisie

Nom de l'opération Raccourci par défaut Description
history_previous up Récupérer la saisie précédente de l'historique (fonctionne lorsque le champ de saisie est vide)
history_next down Récupérer la saisie suivante de l'historique

Raccourcis de saisie intégrés à la version de bureau

La zone de saisie d'invite dans la version de bureau d'OpenCode dispose en outre d'un ensemble intégré d'édition de textede style Readline / Emacs,Ces raccourcis sont des fonctionnalités intégrées et ne peuvent pas êtretui.jsonmodifiés en les modifiant ou en les désactivant:

raccourcis. Opération
ctrl+a Déplacer au début de la ligne actuelle
ctrl+e Déplacer à la fin de la ligne actuelle
ctrl+b Déplacer le curseur d'un caractère vers l'arrière
ctrl+f Déplacer le curseur d'un caractère vers l'avant
alt+b Déplacer le curseur d'un mot vers l'arrière
alt+f Déplacer le curseur d'un mot vers l'avant
ctrl+d Supprimer le caractère à la position du curseur
ctrl+k Supprimer le contenu du curseur jusqu'à la fin de la ligne
ctrl+u Supprimer le contenu du curseur jusqu'au début de la ligne
ctrl+w Supprimer le mot précédent
alt+d Supprimer le mot suivant
ctrl+t Échanger les positions des deux caractères avant et après le curseur
ctrl+g Annuler la fenêtre contextuelle actuelle, ou interrompre la réponse en cours

Configuration de Maj+Entrée pour les sauts de ligne

Par défaut, certains terminaux n'envoient pas Entrée avec les touches modificatrices (par ex.Shift+Enter) comme une pression de touche distincte, ce qui fait qu'en l'appuyant dans OpenCodeShift+Enterne crée pas de nouvelle ligne mais envoie directement le message.

Méthode de configuration de Windows Terminal

Étape 1 :Ouvrez lesettings.jsonfichier de Windows Terminal, le chemin est :

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

Étape 2 :Dans leactionstableau au niveau racine du fichier, ajoutez la configuration suivante pour définir uneShift+Enteraction qui envoie une séquence d'échappement :

Exemple

"actions": [
  {
    "command": {
      "action": "sendInput",
"input": "\u001b[13;2u" // Séquence d'échappement standard pour Maj+Entrée (format CSI u)
    },
    "id": "User.sendInput.ShiftEnterCustom"
  }
]

Étape 3 :Dans le tableau au niveau racinekeybindingsdu fichier, ajoutez une liaison de touche pour mapperShift+Enterà l'action définie ci-dessus :

Exemple

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

Étape 4 :Enregistrezsettings.jsonAprès avoir enregistré le fichier, redémarrez Windows Terminal ou ouvrez un nouvel onglet pour que la configuration prenne effet.

Si vous utilisez d'autres terminaux (tels que iTerm2, Kitty, Alacritty, etc.), consultez la documentation du terminal correspondant, trouvez les paramètres liés aux « Key Mappings » ou « Key bindings », et configurezShift+Enter-le pour envoyer\u001b[13;2ula séquence d'échappement.

Autres extensions