Skip to main content
Claude Code prend en charge les raccourcis clavier personnalisables. Exécutez /keybindings pour créer ou ouvrir votre fichier de configuration à ~/.claude/keybindings.json.

Fichier de configuration

Le fichier de configuration des liaisons de touches est un objet avec un tableau bindings. Chaque bloc spécifie un contexte et une carte des séquences de touches aux actions.
Les modifications du fichier keybindings sont automatiquement détectées et appliquées sans redémarrer Claude Code.
Cet exemple lie Ctrl+E pour ouvrir un éditeur externe dans le contexte de chat, et délié 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 un format namespace:action, tel que chat:submit pour envoyer un message ou app:toggleTodos pour afficher la liste des tâches. Chaque contexte a des actions spécifiques disponibles.

Actions d’application

Actions disponibles dans le contexte Global :

Actions d’historique

Actions pour naviguer dans l’historique des commandes :

Actions de chat

Actions disponibles dans le contexte Chat : *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 contexte Autocomplete :

Actions de confirmation

Actions disponibles dans le contexte Confirmation : *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 v2.1.257, une action confirm:toggleExplanation, liée à Ctrl+E par défaut, affichait une explication générée par le modèle de la commande sur les invites de permission Bash et PowerShell. Les dialogues utilisent confirm:yes et confirm:no pour accepter et annuler même lorsqu’ils ne posent pas une question oui ou non. Si vous liez une simple lettre telle que y ou n dans ce contexte, la lettre agit également sur les dialogues qui ne la montrent jamais comme clé. Un dialogue qui affiche y et n comme ses clés les lit lui-même et n’a besoin d’aucune liaison. En général, appuyer sur Ctrl+C ou Ctrl+D deux fois ferme le dialogue au lieu de quitter Claude Code. L’indice après la première pression indique si la deuxième pression ferme le dialogue ou quitte. Les deux touches sont réservées et ne peuvent pas être reliées. Cet exemple lie y à confirm:yes et n à confirm:no :
Avec ces liaisons, y et n tapent toujours comme des lettres pendant qu’un champ de texte a le focus. Avant v2.1.280, y était également lié à confirm:yes et n à confirm:no par défaut. Si vous avez créé votre keybindings.json avec /keybindings avant v2.1.280, le fichier liste les deux liaisons et elles restent en vigueur jusqu’à ce que vous supprimiez ces deux lignes.

Actions de permission

Actions disponibles dans le contexte Confirmation pour les dialogues de permission :

Actions de transcription

Actions disponibles dans le contexte Transcript : transcript:toggleShowAll s’applique uniquement dans le rendu classique ; dans le rendu plein écran, la visionneuse de transcription n’offre pas de basculement d’affichage complet.

Actions de recherche d’historique

Actions disponibles dans le contexte HistorySearch : Les valeurs par défaut de historySearch:next, historySearch:accept, historySearch:cancel et historySearch:execute s’appliquent à la recherche d’historique en ligne dans le rendu classique, qui recherche toujours les invites de tous les projets. historySearch:cycleScope prend effet uniquement dans le rendu plein écran, où Ctrl+R ouvre un dialogue de recherche à la place et Ctrl+S bascule sa portée. Les autres touches du dialogue sont fixes et ne peuvent pas être reliées : Entrée ou Tab place la correspondance en surbrillance dans l’entrée d’invite et Échap annule.

Actions de tâche

Actions disponibles dans le contexte Task :

Actions de thème

Actions disponibles dans le contexte ThemePicker :

Actions d’aide

Actions disponibles dans le contexte Help :

Actions d’onglets

Actions disponibles dans le contexte Tabs : Dans un dialogue avec onglets, tabs:next et tabs:previous basculent les onglets pendant que la ligne d’onglets a le focus. Dans certains dialogues, tels que /help et /sandbox, les touches de basculement d’onglets fonctionnent également à partir du contenu de l’onglet. Haut et Bas déplacent le focus entre la ligne d’onglets et le contenu de l’onglet, et une liste dans le contenu répond aux touches uniquement pendant qu’elle a le focus.

Actions de pièces jointes

Actions disponibles dans le contexte Attachments : Actions disponibles dans le contexte Footer : Pendant qu’un élément de pied de page est sélectionné, tel qu’une ligne dans le panneau agent sous l’invite, Entrée l’ouvre même lorsque vous reliez Entrée dans le contexte Chat à chat:queueSubmit ou chat:newline. Les liaisons Chat sur les touches que le contexte Footer ne lie pas, telles que Maj+Tab pour chat:cycleMode, continuent de fonctionner pendant qu’un élément est sélectionné.

Actions du sélecteur de message

Dans la liste des messages du menu de rembobinage, vous vous déplacez dans les messages et en choisissez un avec les actions de sélection et leurs touches par défaut. Vos liaisons Select pour ces actions s’appliquent également là. Le contexte MessageSelector n’a pas d’actions ou de liaisons par défaut qui lui sont propres. Utilisez-le pour modifier une touche pour cette liste uniquement, en liant une action Select telle que select:accept dans un bloc MessageSelector. Cet exemple lie o pour choisir le message en surbrillance dans le menu de rembobinage, sans modifier aucune autre liste :
Avant v2.1.283, cette liste ignorait les liaisons Select et avait ses propres actions : messageSelector:up, messageSelector:down, messageSelector:top, messageSelector:bottom et messageSelector:select. Si votre keybindings.json lie l’un de ces noms, la liaison continue de fonctionner dans cette liste en tant que l’action Select qui fait la même chose. Home et End sautent à l’une ou l’autre extrémité de la liste ; avant v2.1.283, des touches telles que Maj+K et Maj+J le faisaient par défaut.

Actions de diff

Actions disponibles dans le contexte DiffDialog : La liste des fichiers répond également aux actions de sélection, via leurs touches par défaut et vos liaisons Select. select:previous et select:next se déplacent vers le fichier précédent et suivant, et Entrée ouvre le diff du fichier sélectionné via select:accept. Pour modifier l’une de ces touches pour la liste des fichiers uniquement, liez l’action Select dans un bloc DiffDialog. Avant v2.1.283, la liste des fichiers ignorait les liaisons Select, et Entrée ouvrait le diff du fichier sélectionné via une action diff:viewDetails distincte. Si votre keybindings.json lie diff:viewDetails, la liaison continue de fonctionner dans la liste des fichiers en tant que select:accept. La vue détaillée du diff lie également les touches de style paginateur aux actions de défilement standard. Ces liaisons font partie du contexte DiffDialog et s’appliquent uniquement dans la vue détaillée ; les valeurs par défaut du contexte Scroll listées sous Actions de défilement sont inchangées.

Actions du panneau de diff

Actions pour le panneau de diff que /diff ouvre dans le rendu plein écran. app:cycleDiffBase est dans le contexte DiffPanel, qui est actif pendant que le panneau est ouvert ; les autres sont Global. Le panneau nécessite Claude Code v2.1.260 ou ultérieure.

Actions du sélecteur de modèle

Actions disponibles dans le contexte ModelPicker :

Actions du curseur d’effort

Actions disponibles dans le contexte EffortSlider, le curseur qui s’ouvre lorsque vous exécutez /effort sans arguments. Les touches Entrée et Échappement du curseur ne peuvent pas être reliées.

Actions de sélection

Actions disponibles dans le contexte Select : Dans les panneaux de liste tels que /skills et /mcp, Claude Code applique vos liaisons select:pageUp, select:pageDown, select:first et select:last. Dans la plupart des autres listes, telles que le sélecteur /model, vos liaisons select:first et select:last s’appliquent. PageUp et PageDown parcourent les options dans ces listes indépendamment de vos liaisons. Avant v2.1.280, ces autres listes ignoraient Home, End, et vos liaisons select:first et select:last.

Actions de plugin

Actions disponibles dans le contexte Plugin :

Actions des paramètres

Actions disponibles dans le contexte Settings. Les actions select:accept et confirm:no sont réutilisées à partir des contextes Sélection et Confirmation avec un comportement spécifique aux paramètres : les modifications s’appliquent à chaque paramètre dès que vous le modifiez, donc Échappement ferme le panneau avec vos modifications enregistrées plutôt que de refuser.

Actions des agents

Actions disponibles dans le contexte Agents, qui s’applique dans la vue agent, ouverte avec claude agents. Nécessite v2.1.257 ou ultérieure. Pendant que la vue agent est ouverte, Claude Code utilise la liaison Agents pour toute touche que le contexte Agents lie, et il ignore une liaison Chat ou Global sur la même touche. Par exemple, appuyer sur Ctrl+S dans la vue agent bascule le regroupement de session plutôt que de déclencher la valeur par défaut chat:stash. Le raccourci d’éditeur externe de la saisie de dispatch n’est pas une action Agents. La vue agent suit la liaison chat:externalEditor du contexte Chat, Ctrl+G par défaut. Les liaisons se déclenchent sur des traits simples dans la vue agent, donc l’accord Ctrl+X Ctrl+E lié à chat:externalEditor n’ouvre pas l’éditeur là.

Actions vocales

Actions disponibles dans le contexte Chat lorsque la dictée vocale est activée :

Actions de défilement

Actions disponibles dans le contexte Scroll lorsque le rendu plein écran est activé :

Syntaxe des séquences de touches

Modificateurs

Utilisez les touches de modification avec le séparateur + :
  • ctrl ou control - Touche Contrôle
  • shift - Touche Maj
  • alt, opt, option, ou meta - Touche Alt sur Windows et Linux, touche Option sur macOS
  • cmd, command, super, ou win - Touche Commande sur macOS, touche Windows sur Windows, touche Super sur Linux
Le groupe 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, donc K 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
Avant v2.1.247, appuyer sur un raccourci Ctrl sous une disposition non-latine ne déclenchait pas sa liaison dans les terminaux qui utilisent le protocole clavier Kitty, tels que Ghostty, Kitty, WezTerm et iTerm2.

Accords

Les accords sont des séquences de touches séparées par des espaces :
Appuyez sur chaque séquence de touches dans les 3 secondes suivant la précédente. Si vous attendez plus longtemps, Claude Code annule l’accord et affiche un bref message indiquant que c’est le cas.

Touches spéciales

  • escape ou esc - Touche Échappement
  • enter ou return - Touche Entrée
  • tab - Touche Tab
  • space - Barre d’espace
  • up, down, left, right - Touches fléchées
  • pageup, pagedown - Touches Page Précédente et Page Suivante
  • home, end - Touches Accueil et Fin
  • backspace, delete - Touches de suppression
  • wheelup, wheeldown - Événements de défilement de la molette de la souris

Délier les raccourcis par défaut

Définissez une action sur null pour délier un raccourci par défaut :
Cela fonctionne également pour les liaisons d’accords. Délier tous les accords qui partagent un préfixe libère ce préfixe pour une utilisation comme liaison à touche unique. Un accord dans n’importe quel contexte actif conserve son préfixe réservé, vous devez donc délier chaque accord dans le contexte qui le définit. Claude Code lie ces accords par défaut sur le préfixe ctrl+x : ctrl+x ctrl+k, ctrl+x ctrl+e, ctrl+x enter, ctrl+x ctrl+a, ctrl+x ctrl+s, et ctrl+x tab dans Chat, ctrl+x ctrl+b dans Task, et ctrl+x b dans DiffPanel. L’accord 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 :
Si vous déliez certains accords mais pas tous sur un préfixe, appuyer sur le préfixe entre toujours en mode d’attente d’accord pour les liaisons restantes.

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
À l’invite principale, Claude Code fait correspondre chaque touche aux contextes actifs, tels que Chat, et tape la touche uniquement quand aucune liaison ne la prend.

Interaction du mode Vim

Lorsque le mode vim est activé via /config → Mode Éditeur, les liaisons de touches et le mode vim fonctionnent indépendamment :
  • Mode Vim gère l’entrée au niveau de la saisie de texte (mouvement du curseur, modes, motions)
  • Liaisons de touches gèrent les actions au niveau du composant (basculer les tâches, soumettre, etc.)
  • La touche Échappement en mode vim bascule INSERT en mode NORMAL ; elle ne déclenche pas chat:cancel
  • La plupart des raccourcis Ctrl+touche passent par le mode vim au système de liaison de touches
  • Les touches Vim ne sont pas remappables via le fichier de liaisons de touches. Pour mapper une séquence en mode INSERT à deux touches comme jj à Échappement, utilisez le paramètre vimInsertModeRemaps
  • En mode NORMAL vim, ? affiche le menu d’aide (comportement vim)
  • En mode NORMAL vim, / ouvre la recherche dans l’historique, identique à Ctrl+R en mode standard

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)
  • 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. Avant v2.1.246, une liaison avec un nom d’action inconnu désactivait silencieusement cette touche
  • Conflits de raccourcis réservés
  • Liaisons en double dans le même contexte
Démarrez Claude Code avec --debug pour voir les détails.