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
{
"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
{
"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.
Autres extensionsSi 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 configurez
Shift+Enter-le pour envoyer\u001b[13;2ula séquence d'échappement.