/keybindings pour créer ou ouvrir votre fichier de configuration à ~/.claude/keybindings.json.
Fichier de configuration
Le fichier de configuration des raccourcis clavier est un objet contenant un tableaubindings. Chaque bloc spécifie un contexte et une correspondance entre des combinaisons de touches et des actions.
Les modifications apportées au fichier des raccourcis clavier sont automatiquement détectées et appliquées sans redémarrer Claude Code.
Cet exemple associe
Ctrl+E à l’ouverture d’un éditeur externe dans le contexte du chat, et supprime l’association de Ctrl+S :
Contextes
Chaque bloc de liaison spécifie un contexte où les liaisons s’appliquent :
Avant la v2.1.205, un contexte
Doctor et une action doctor:fix existaient pour l’écran de diagnostics /doctor.
Actions disponibles
Les actions suivent le formatnamespace:action, comme chat:submit pour envoyer un message ou app:toggleTodos pour afficher la liste des tâches. Chaque contexte dispose d’actions spécifiques.
Actions de l’application
Actions disponibles dans le contexteGlobal :
Actions de l’historique
Actions permettant de naviguer dans l’historique des commandes :Actions du chat
Actions disponibles dans le contexteChat :
*Sous Windows sans mode VT (Node <24.2.0/<22.17.0, Bun <1.2.23), la valeur par défaut est Meta+M.
Actions d’autocomplétion
Actions disponibles dans le contexteAutocomplete :
Actions de confirmation
Actions disponibles dans le contexteConfirmation :
*Sous Windows sans mode VT (Node <24.2.0/<22.17.0, Bun <1.2.23), la valeur par défaut est Meta+M.
Avant la v2.1.257, une action
confirm:toggleExplanation, attribuée par défaut à Ctrl+E, affichait une explication de la commande générée par le modèle dans les demandes de permission Bash et PowerShell.
Les boîtes de dialogue utilisent confirm:yes et confirm:no pour accepter et annuler, même lorsqu’elles ne posent pas une question fermée. Si vous attribuez une simple lettre telle que y ou n dans ce contexte, cette lettre agit également sur les boîtes de dialogue qui ne l’affichent jamais comme touche. Une boîte de dialogue qui affiche y et n comme touches lit elle-même ces lettres et n’a besoin d’aucune attribution.
Dans la plupart des boîtes de dialogue, appuyer deux fois sur Ctrl+C ou Ctrl+D ferme la boîte de dialogue au lieu de quitter Claude Code. L’indication affichée après le premier appui précise si le second appui ferme la boîte de dialogue ou quitte l’application. Ces deux touches sont réservées et ne peuvent pas être réattribuées.
Cet exemple attribue y à confirm:yes et n à confirm:no :
y et n continuent de saisir des lettres lorsqu’un champ de texte a le focus.
Avant la v2.1.280, y était également attribué par défaut à confirm:yes et n à confirm:no. Si vous avez créé votre keybindings.json avec /keybindings avant la v2.1.280, le fichier contient ces deux attributions, qui restent actives jusqu’à ce que vous supprimiez ces deux lignes.
Actions de permission
Actions disponibles dans le contexteConfirmation pour les boîtes de dialogue de permission :
Actions de la transcription
Actions disponibles dans le contexteTranscript :
transcript:toggleShowAll s’applique uniquement dans le moteur de rendu classique ; en rendu plein écran, la visionneuse de transcription ne propose pas d’option pour tout afficher.
Actions de recherche dans l’historique
Actions disponibles dans le contexteHistorySearch :
Les valeurs par défaut de
historySearch:next, historySearch:accept, historySearch:cancel et historySearch:execute s’appliquent à la recherche intégrée dans l’historique du moteur de rendu classique, qui recherche toujours les prompts de tous les projets. historySearch:cycleScope ne prend effet qu’en rendu plein écran, où Ctrl+R ouvre à la place une boîte de dialogue de recherche et Ctrl+S en fait varier la portée. Les autres touches de la boîte de dialogue sont fixes et ne peuvent pas être réattribuées : Enter ou Tab place la correspondance en surbrillance dans la saisie du prompt et Esc annule.
Actions des tâches
Actions disponibles dans le contexteTask :
Actions du thème
Actions disponibles dans le contexteThemePicker :
Actions de l’aide
Actions disponibles dans le contexteHelp :
Actions des onglets
Actions disponibles dans le contexteTabs :
Dans une boîte de dialogue à onglets,
tabs:next et tabs:previous changent d’onglet lorsque la rangée d’onglets a le focus. Dans certaines boîtes de dialogue, comme /help et /sandbox, les touches de changement d’onglet fonctionnent aussi depuis le contenu de l’onglet.
Up et Down déplacent le focus entre la rangée d’onglets et le contenu de l’onglet, et une liste dans le contenu ne réagit aux touches que lorsqu’elle a le focus.
Actions des pièces jointes
Actions disponibles dans le contexteAttachments :
Actions du pied de page
Actions disponibles dans le contexteFooter :
Lorsqu’un élément du pied de page est sélectionné, comme une ligne du panneau des agents sous le prompt,
Enter l’ouvre même si vous avez réattribué Enter dans le contexte Chat à chat:queueSubmit ou chat:newline.
Les attributions Chat sur des touches que le contexte Footer n’attribue pas, comme Shift+Tab pour chat:cycleMode, continuent de fonctionner lorsqu’un élément est sélectionné.
Actions du sélecteur de messages
Dans la liste des messages du menu de retour en arrière, vous parcourez les messages et en choisissez un avec les actions Select et leurs touches par défaut. Vos attributionsSelect pour ces actions s’y appliquent également. Le contexte MessageSelector ne possède ni actions ni attributions par défaut propres. Utilisez-le pour modifier une touche pour cette seule liste, en attribuant une action Select telle que select:accept dans un bloc MessageSelector.
Cet exemple attribue o à la sélection du message en surbrillance dans le menu de retour en arrière, sans modifier aucune autre liste :
Select et disposait de ses propres actions : messageSelector:up, messageSelector:down, messageSelector:top, messageSelector:bottom et messageSelector:select. Si votre keybindings.json attribue l’un de ces noms, l’attribution continue de fonctionner dans cette liste en tant qu’action Select équivalente. Home et End permettent d’aller à l’une ou l’autre extrémité de la liste ; avant la v2.1.283, des touches comme Shift+K et Shift+J le faisaient par défaut.
Actions du diff
Ces actions ne concernent que l’ancienne visionneuse de diff de Claude Code, que/diff ouvre en dehors du rendu plein écran après que vous avez désactivé le mod cc-plugin-diff dans /plugin. Tant que ce mod est activé, /diff ouvre à la place la boîte de dialogue de diff.
Actions disponibles dans le contexte DiffDialog :
La liste des fichiers réagit également aux actions Select, via leurs touches par défaut et vos attributions
Select. select:previous et select:next passent au fichier précédent et suivant, et Enter ouvre le diff du fichier sélectionné via select:accept. Pour modifier l’une de ces touches pour la seule liste des fichiers, attribuez l’action Select dans un bloc DiffDialog.
Avant la v2.1.283, la liste des fichiers ignorait les attributions Select, et Enter ouvrait le diff du fichier sélectionné via une action distincte diff:viewDetails. Si votre keybindings.json attribue diff:viewDetails, l’attribution continue de fonctionner dans la liste des fichiers en tant que select:accept.
La vue détaillée du diff attribue également des touches de type pager aux actions de défilement standard. Ces attributions font partie du contexte DiffDialog et ne s’appliquent que dans la vue détaillée ; les valeurs par défaut du contexte Scroll répertoriées dans Actions de défilement restent inchangées.
Actions du panneau de diff
Actions pour le panneau de diff que/diff ouvre en rendu plein écran. app:cycleDiffBase se trouve dans le contexte DiffPanel, actif tant que le panneau est ouvert ; les autres sont dans Global.
Le mod cc-plugin-diff intégré dessine ce panneau et gère app:cycleDiffBase, app:diffFileListUp et app:diffFileListDown. app:toggleReplTab, app:toggleDiffNoiseFilter et app:toggleDiffPreSession ne concernent que l’ancien panneau de Claude Code, que /diff ouvre après que vous avez désactivé cc-plugin-diff dans /plugin.
Actions du sélecteur de modèle
Actions disponibles dans le contexteModelPicker :
Actions du curseur d’effort
Actions disponibles dans le contexteEffortSlider, le curseur qui s’ouvre lorsque vous exécutez /effort sans argument. Les touches Enter et Escape du curseur ne peuvent pas être réattribuées.
Actions Select
Actions disponibles dans le contexteSelect :
Dans les panneaux de liste tels que
/skills, /mcp et /tasks, Claude Code applique vos attributions select:pageUp, select:pageDown, select:first et select:last. Dans la plupart des autres listes, comme le sélecteur /model, vos attributions select:first et select:last s’appliquent. PageUp et PageDown font défiler les options de ces listes page par page, indépendamment de vos attributions.
Avant la v2.1.280, ces autres listes ignoraient Home, End et vos attributions select:first et select:last.
Avant la v2.1.283, la liste des outils de /mcp défilait page par page avec les touches fixes PageUp et PageDown, indépendamment de vos attributions.
Actions des plugins
Actions disponibles dans le contextePlugin :
Actions au-dessus du prompt
Actions pour la bande située au-dessus du prompt, la zone partagée où les mods dessinent des boutons, des champs de saisie et des listes de sélection.abovePrompt:toggle et abovePrompt:focus s’appliquent dans le contexte Chat. Les autres actions s’appliquent dans le contexte de l’élément qui a le focus clavier dans la bande ou dans un volet.
Dans le contexte
AbovePrompt, Right et Left exécutent également par défaut abovePrompt:next et abovePrompt:previous, et Space exécute également abovePrompt:press.
Le contexte AbovePrompt attribue aussi Up, Down, PageUp, PageDown, Home et End aux actions de défilement des volets pane:scrollUp à pane:bottom ; pour modifier l’une de ces touches pour la bande, attribuez l’action de défilement dans un bloc AbovePrompt.
Actions des volets
Actions pour un volet dessiné par un mod. Les actions de défilement, de redimensionnement et de fermeture s’appliquent dans le contextePane. pane:close s’applique également dans le contexte PaneField, de sorte qu’elle fonctionne lorsqu’un des champs du volet a le focus. pane:next et pane:previous s’appliquent dans le contexte Global lorsque plusieurs volets sont ouverts.
Le contexte
Pane attribue également Tab, Shift+Tab, Enter et Escape aux mêmes actions au-dessus du prompt que la bande, et les champs de saisie et listes de sélection d’un volet utilisent les contextes AbovePromptInput et AbovePromptSelect. Focus clavier et raccourcis indique ce que fait chaque touche dans un volet.
Actions des paramètres
Actions disponibles dans le contexteSettings. Les actions select:accept et confirm:no sont reprises des contextes Select et Confirmation avec un comportement propre aux paramètres : les modifications s’appliquent à chaque paramètre dès que vous le modifiez, donc Escape ferme le panneau en enregistrant vos modifications plutôt qu’en les refusant.
Actions des agents
Actions disponibles dans le contexteAgents, qui s’applique dans la vue des agents, ouverte avec claude agents. Nécessite la v2.1.257 ou ultérieure.
Lorsque la vue des agents est ouverte, Claude Code utilise l’attribution
Agents pour toute touche attribuée par le contexte Agents, et ignore une attribution Chat ou Global sur la même touche. Par exemple, appuyer sur Ctrl+S dans la vue des agents bascule le regroupement des sessions au lieu de déclencher l’action par défaut chat:stash.
Le raccourci d’éditeur externe du champ de saisie Dispatch n’est pas une action Agents. La vue des agents suit l’attribution chat:externalEditor du contexte Chat, Ctrl+G par défaut.
Dans la vue des agents, les attributions se déclenchent sur des touches uniques ; la combinaison Ctrl+X Ctrl+E attribuée à chat:externalEditor n’y ouvre donc pas l’éditeur.
Actions vocales
Actions disponibles dans le contexteChat lorsque la dictée vocale est activée :
Actions de défilement
Actions disponibles dans le contexteScroll lorsque le rendu plein écran est activé :
Syntaxe des séquences de touches
Modificateurs
Utilisez les touches de modification avec le séparateur+ :
ctrloucontrol- Touche Contrôleshift- Touche Majalt,opt,option, oumeta- Touche Alt sur Windows et Linux, touche Option sur macOScmd,command,super, ouwin- Touche Commande sur macOS, touche Windows sur Windows, touche Super sur Linux
cmd n’est détecté que dans les terminaux qui signalent le modificateur Super, comme ceux prenant en charge le protocole clavier Kitty ou le mode modifyOtherKeys de xterm. La plupart des terminaux ne l’envoient pas, donc utilisez ctrl ou meta pour les liaisons que vous voulez que fonctionnent partout.
Par exemple :
Lettres majuscules
Claude Code analyse les noms de touches de manière insensible à la casse, doncK est la même liaison que k et ctrl+K est la même que ctrl+k. Pour lier Maj et une lettre, écrivez shift+k.
Dispositions de clavier non-US
Écrivez les noms de touches des raccourcis Ctrl en tant que caractères latins même lorsque votre disposition de clavier active tape d’autres caractères. La façon dont Claude Code fait correspondre la touche que vous appuyez à une liaison dépend du type de disposition :- Sous une disposition non-latine telle que le cyrillique, Claude Code fait correspondre les raccourcis Ctrl par la position de la touche en disposition US lorsque le terminal utilise le protocole clavier Kitty et signale cette position. Dans un tel terminal, avec une disposition russe active, appuyer sur Ctrl et la touche W physique déclenche
ctrl+w. Dans un terminal qui ne signale pas la position, Claude Code fait correspondre ce que le terminal envoie pour la frappe : un code de contrôle ASCII déclenche le raccourci latin, et une frappe qui arrive en tant que caractère cyrillique ne correspond à aucune liaison - Sous les dispositions qui réorganisent les lettres latines, telles que AZERTY, Claude Code fait correspondre la lettre que la touche tape, donc appuyer sur Ctrl et la touche étiquetée A déclenche
ctrl+a
Accords
Les accords sont des séquences de touches séparées par des espaces :Touches spéciales
escapeouesc- Touche Échappemententeroureturn- Touche Entréetab- Touche Tabspace- Barre d’espaceup,down,left,right- Touches fléchéespageup,pagedown- Touches Page Précédente et Page Suivantehome,end- Touches Accueil et Finbackspace,delete- Touches de suppressionwheelup,wheeldown- Événements de défilement de la molette de la souris
Délier les raccourcis par défaut
Définissez une action surnull pour délier un raccourci par défaut :
ctrl+x, par contexte :
Chat:ctrl+x ctrl+k,ctrl+x ctrl+e,ctrl+x enter,ctrl+x ctrl+a,ctrl+x ctrl+s,ctrl+x tab,ctrl+x ctrl+=,ctrl+x ctrl+-,ctrl+x ctrl+_,ctrl+x =etctrl+x -Task:ctrl+x ctrl+bDiffPanel:ctrl+x bPane:ctrl+x left,ctrl+x right,ctrl+x up,ctrl+x downetctrl+x xPaneField:ctrl+x x
ctrl+x enter nécessite la v2.1.247 ou une version ultérieure, ctrl+x b, ctrl+x ctrl+a, et ctrl+x tab nécessitent la v2.1.260 ou une version ultérieure, et ctrl+x ctrl+s nécessite la v2.1.275 ou une version ultérieure.
Pour récupérer ctrl+x lui-même comme liaison à touche unique, déliez tous les éléments suivants :
Raccourcis réservés
Ces raccourcis ne peuvent pas être reliés :Conflits de terminal
Certains raccourcis peuvent entrer en conflit avec les multiplexeurs de terminal :Champs de texte
Si vous liez une lettre, un chiffre ou une Espace nue, vous pouvez toujours taper ce caractère dans un champ de texte à l’intérieur d’une boîte de dialogue ou d’un panneau. L’un de ces champs est la réponse « Autre » à une question que Claude pose. Tant que le champ a le focus, une touche imprimable que vous appuyez sans Ctrl, Alt ou Cmd va au champ, et Claude Code ne la fait pas correspondre à vos liaisons. Ces touches exécutent toujours leurs liaisons tant que le champ a le focus :- Les touches qui ne tapent pas un caractère, telles que Entrée, Échap, Tab et les touches fléchées
- N’importe quelle touche appuyée avec Ctrl, Alt ou Cmd
- La deuxième frappe d’un accord déjà en cours
Chat, et tape la touche uniquement quand aucune liaison ne la prend.
Interaction avec le mode vim
Lorsque vous activez le mode vim avec le paramètre Editor mode dans/config, les raccourcis clavier et le mode vim fonctionnent indépendamment :
- Le mode vim gère la saisie au niveau du champ de texte : déplacement du curseur, modes et mouvements
- Les raccourcis clavier gèrent les actions au niveau des composants, comme l’affichage des todos ou l’envoi d’un message
- La touche Escape en mode vim fait passer du mode INSERT au mode NORMAL ; elle ne déclenche pas
chat:cancel - La plupart des raccourcis Ctrl+touche traversent le mode vim jusqu’au système de raccourcis clavier
- Les touches vim ne sont pas réassignables via le fichier de raccourcis clavier. Pour associer une séquence de deux touches en mode INSERT telle que
jjà Escape, utilisez le paramètrevimInsertModeRemaps - En mode NORMAL de vim,
?affiche le menu d’aide (comportement vim) - En mode NORMAL de vim,
/ouvre la recherche dans l’historique, comme Ctrl+R en mode standard
Other d’une question posée par Claude, Escape n’annule pas immédiatement la question en mode vim. Sauf en mode lecteur d’écran, la ligne démarre en mode INSERT chaque fois que vous lui donnez le focus. Lorsque vous appuyez sur Escape dans la ligne Other, la ligne passe en mode NORMAL ou abandonne une commande vim à moitié saisie, et la question reste ouverte. Appuyez à nouveau sur Escape en mode NORMAL pour annuler la question.
Annuler une question en une seule pression de touche
Pour annuler une question en une seule pression de touche en mode vim, associez une autre touche àselect:cancel dans le contexte Select. Vous pouvez annuler de cette façon depuis la ligne Other d’une question où vous sélectionnez une seule option. En mode lecteur d’écran ou dans une question où vous pouvez sélectionner plusieurs options, la touche associée n’annule pas : annulez alors avec Escape.
Choisissez une touche que vous pressez avec Ctrl ou Alt. Une lettre ou un chiffre seul est envoyé à la ligne Other et n’atteint pas vos raccourcis. Par exemple, pour associer Ctrl+Q, ajoutez ceci à ~/.claude/keybindings.json :
Ctrl+Q dans la ligne Other d’une question où vous sélectionnez une seule option. La question se ferme, que la ligne soit en mode INSERT ou NORMAL.
Validation
Claude Code valide vos liaisons de touches et écrit un avertissement dans le journal de débogage pour :- Erreurs d’analyse (JSON invalide ou structure)
- Modificateurs mal orthographiés, tels que
ctl+k. Claude Code ignore l’intégralité de la liaison. Corrigez le modificateur, enctrl+kdans cet exemple. - Un espace à côté de
+dans une chaîne de touches, tel quectrl+ k. Claude Code interprète la chaîne comme un accord dectrl+suivi dek. Aucune frappe ne correspond àctrl+seul, la liaison ne se déclenche donc jamais. Supprimez l’espace. - Noms de contexte invalides
- Valeurs d’action invalides, telles qu’une action qui n’est pas une chaîne ou
null - Noms d’action inconnus, tels qu’une faute de frappe d’une action enregistrée. Claude Code ignore la liaison et conserve toute liaison par défaut pour cette touche en vigueur.
- Conflits de raccourcis réservés
- Liaisons en double dans le même contexte
--debug pour voir les détails.