/keybindings para criar ou abrir seu arquivo de configuração em ~/.claude/keybindings.json.
Arquivo de configuração
O arquivo de configuração de atalhos de teclado é um objeto com um arraybindings. Cada bloco especifica um contexto e um mapa de combinações de teclas para ações.
As alterações no arquivo de atalhos de teclado são detectadas automaticamente e aplicadas sem reiniciar o Claude Code.
Este exemplo vincula
Ctrl+E para abrir um editor externo no contexto do chat e remove o vínculo de Ctrl+S:
Contextos
Cada bloco de vinculação especifica um contexto onde as vinculações se aplicam:
Antes da v2.1.205, um contexto
Doctor e uma ação doctor:fix existiam para a tela de diagnósticos /doctor.
Ações disponíveis
As ações seguem um formatonamespace:action, como chat:submit para enviar uma mensagem ou app:toggleTodos para mostrar a lista de tarefas. Cada contexto tem ações específicas disponíveis.
Ações do aplicativo
Ações disponíveis no contextoGlobal:
Ações de histórico
Ações para navegar no histórico de comandos:Ações de chat
Ações disponíveis no contextoChat:
*No Windows sem modo VT (Node <24.2.0/<22.17.0, Bun <1.2.23), o padrão é Meta+M.
Ações de autocompletar
Ações disponíveis no contextoAutocomplete:
Ações de confirmação
Ações disponíveis no contextoConfirmation:
*No Windows sem modo VT (Node <24.2.0/<22.17.0, Bun <1.2.23), o padrão é Meta+M.
Antes da v2.1.257, uma ação
confirm:toggleExplanation, vinculada a Ctrl+E por padrão, mostrava uma explicação gerada por modelo do comando em prompts de permissão Bash e PowerShell.
Os diálogos usam confirm:yes e confirm:no para aceitar e cancelar mesmo quando não fazem uma pergunta sim-ou-não. Se você vincular uma letra simples como y ou n neste contexto, a letra também atua em diálogos que nunca a mostram como uma chave. Um diálogo que mostra y e n como suas chaves lê essas letras em si e não precisa de vinculação.
Em muitos diálogos, pressionar Ctrl+C ou Ctrl+D duas vezes fecha o diálogo em vez de sair do Claude Code. A dica após o primeiro pressionamento diz se o segundo pressionamento fecha o diálogo ou sai. Ambas as chaves são reservadas e não podem ser rebindadas.
Este exemplo vincula y a confirm:yes e n a confirm:no:
y e n ainda digitam como letras enquanto um campo de texto tem foco.
Antes da v2.1.280, y também estava vinculado a confirm:yes e n a confirm:no por padrão. Se você criou seu keybindings.json com /keybindings antes da v2.1.280, o arquivo lista ambas as vinculações e elas permanecem em vigor até que você delete essas duas linhas.
Ações de permissão
Ações disponíveis no contextoConfirmation para diálogos de permissão:
Ações de transcrição
Ações disponíveis no contextoTranscript:
transcript:toggleShowAll se aplica apenas no renderizador clássico; na renderização em tela cheia, o visualizador de transcrição não oferece um toggle de mostrar tudo.
Ações de busca de histórico
Ações disponíveis no contextoHistorySearch:
Os padrões
historySearch:next, historySearch:accept, historySearch:cancel e historySearch:execute se aplicam à busca de histórico inline no renderizador clássico, que sempre busca prompts de todos os projetos. historySearch:cycleScope entra em vigor apenas na renderização em tela cheia, onde Ctrl+R abre um diálogo de busca em vez disso e Ctrl+S cicla seu escopo. As outras teclas do diálogo são fixas e não podem ser rebindadas: Enter ou Tab coloca a correspondência destacada na entrada do prompt e Esc cancela.
Ações de tarefa
Ações disponíveis no contextoTask:
Ações de tema
Ações disponíveis no contextoThemePicker:
Ações de ajuda
Ações disponíveis no contextoHelp:
Ações de abas
Ações disponíveis no contextoTabs:
Em um diálogo com abas,
tabs:next e tabs:previous alternam abas enquanto a linha de abas tem foco. Em alguns diálogos, como /help e /sandbox, as teclas de alternância de abas também funcionam de dentro do conteúdo da aba.
Up e Down movem o foco entre a linha de abas e o conteúdo da aba, e uma lista no conteúdo responde às chaves apenas enquanto tem foco.
Ações de anexos
Ações disponíveis no contextoAttachments:
Ações de rodapé
Ações disponíveis no contextoFooter:
Enquanto um item do rodapé está selecionado, como uma linha no painel do agente abaixo do prompt,
Enter o abre mesmo quando você rebinda Enter no contexto Chat para chat:queueSubmit ou chat:newline.
As vinculações Chat em teclas que o contexto Footer não vincula, como Shift+Tab para chat:cycleMode, continuam funcionando enquanto um item está selecionado.
Ações do seletor de mensagem
Na lista de mensagens do menu de retrocesso, você se move através de mensagens e escolhe uma com as ações de Seleção e suas chaves padrão. Suas vinculaçõesSelect para essas ações também se aplicam lá. O contexto MessageSelector não tem ações ou vinculações padrão próprias. Use-o para alterar uma chave apenas para esta lista, vinculando uma ação Select como select:accept em um bloco MessageSelector.
Este exemplo vincula o para escolher a mensagem destacada no menu de retrocesso, sem alterar nenhuma outra lista:
Select e tinha suas próprias ações: messageSelector:up, messageSelector:down, messageSelector:top, messageSelector:bottom e messageSelector:select. Se seu keybindings.json vincula um desses nomes, a vinculação continua funcionando nesta lista como a ação Select que faz a mesma coisa. Home e End pulam para qualquer extremidade da lista; antes da v2.1.283, teclas como Shift+K e Shift+J faziam isso por padrão.
Ações de diff
Essas ações alcançam apenas o visualizador de diff anterior do Claude Code, que/diff abre fora da renderização em tela cheia depois que você desativa o mod cc-plugin-diff em /plugin. Enquanto esse mod está ativado, /diff abre o diálogo de diff em vez disso.
Ações disponíveis no contexto DiffDialog:
A lista de arquivos também responde às ações de Seleção, através de suas chaves padrão e suas vinculações
Select. select:previous e select:next movem para o arquivo anterior e próximo, e Enter abre o diff do arquivo selecionado através de select:accept. Para alterar uma dessas chaves apenas para a lista de arquivos, vincule a ação Select em um bloco DiffDialog.
Antes da v2.1.283, a lista de arquivos ignorava vinculações Select, e Enter abria o diff do arquivo selecionado através de uma ação diff:viewDetails separada. Se seu keybindings.json vincula diff:viewDetails, a vinculação continua funcionando na lista de arquivos como select:accept.
A visualização de detalhes do diff também vincula atalhos de teclado no estilo pager às ações de rolagem padrão. Essas vinculações fazem parte do contexto DiffDialog e se aplicam apenas na visualização de detalhes; os padrões do contexto Scroll listados em Ações de rolagem permanecem inalterados.
Ações do painel de diff
Ações para o painel de diff que/diff abre na renderização em tela cheia. app:cycleDiffBase está no contexto DiffPanel, que está ativo enquanto o painel está aberto; os outros estão em Global.
O mod cc-plugin-diff integrado desenha este painel e trata app:cycleDiffBase, app:diffFileListUp e app:diffFileListDown. app:toggleReplTab, app:toggleDiffNoiseFilter e app:toggleDiffPreSession alcançam apenas o painel anterior do Claude Code, que /diff abre depois que você desativa cc-plugin-diff em /plugin.
Ações do seletor de modelo
Ações disponíveis no contextoModelPicker:
Ações do controle deslizante de esforço
Ações disponíveis no contextoEffortSlider, o controle deslizante que abre quando você executa /effort sem argumentos. As teclas Enter e Escape do controle deslizante não podem ser rebindadas.
Ações de seleção
Ações disponíveis no contextoSelect:
Claude Code aplica suas vinculações
select:pageUp, select:pageDown, select:first e select:last em painéis de lista como /skills, /mcp e /tasks. Na maioria das outras listas, como o seletor /model, suas vinculações select:first e select:last se aplicam. PageUp e PageDown pagina através das opções nessas listas independentemente de suas vinculações.
Antes da v2.1.280, essas outras listas ignoravam Home, End e suas vinculações select:first e select:last.
Antes da v2.1.283, a lista de ferramentas /mcp paginava com teclas PageUp e PageDown fixas independentemente de suas vinculações.
Ações de plugin
Ações disponíveis no contextoPlugin:
Ações acima do prompt
Ações para a faixa acima do prompt, a área compartilhada onde mods desenham botões, campos de entrada e seletores.abovePrompt:toggle e abovePrompt:focus se aplicam no contexto Chat. As outras ações se aplicam no contexto do que quer que tenha o foco do teclado na faixa ou em um painel.
No contexto
AbovePrompt, Right e Left também executam abovePrompt:next e abovePrompt:previous por padrão, e Space também executa abovePrompt:press.
O contexto AbovePrompt também vincula Up, Down, PageUp, PageDown, Home e End às ações de rolagem de painel de pane:scrollUp a pane:bottom, portanto, para alterar uma dessas teclas para a faixa, vincule a ação de rolagem em um bloco AbovePrompt.
Ações de painel
Ações para um painel desenhado por um mod. As ações de rolagem, redimensionamento e fechamento se aplicam no contextoPane. pane:close também se aplica no contexto PaneField, portanto funciona enquanto um dos campos do painel tem foco. pane:next e pane:previous se aplicam no contexto Global enquanto mais de um painel está aberto.
O contexto
Pane também vincula Tab, Shift+Tab, Enter e Escape às mesmas ações acima do prompt que a faixa, e os campos de entrada e seletores de um painel usam os contextos AbovePromptInput e AbovePromptSelect. Foco do teclado e teclas de atalho lista o que cada tecla faz em um painel.
Ações de configurações
Ações disponíveis no contextoSettings. As ações select:accept e confirm:no são reutilizadas dos contextos Select e Confirmation com comportamento específico de Configurações: as alterações se aplicam a cada configuração assim que você a altera, portanto Escape fecha o painel com suas alterações salvas em vez de recusar.
Ações de agentes
Ações disponíveis no contextoAgents, que se aplica na visualização do agente, aberta com claude agents. Requer v2.1.257 ou posterior.
Enquanto a visualização do agente está aberta, Claude Code usa a vinculação
Agents para qualquer tecla que o contexto Agents vincula, e ignora uma vinculação Chat ou Global na mesma tecla. Por exemplo, pressionar Ctrl+S na visualização do agente alterna o agrupamento de sessão em vez de disparar o padrão chat:stash.
O atalho de editor externo da entrada de despacho não é uma ação Agents. A visualização do agente segue a vinculação chat:externalEditor do contexto Chat, Ctrl+G por padrão.
As vinculações disparam em pressionamentos de tecla únicos na visualização do agente, portanto o acorde Ctrl+X Ctrl+E vinculado a chat:externalEditor não abre o editor lá.
Ações de voz
Ações disponíveis no contextoChat quando a ditação por voz está ativada:
Ações de rolagem
Ações disponíveis no contextoScroll quando a renderização em tela cheia está ativada:
Sintaxe de sequência de teclas
Modificadores
Use teclas modificadoras com o separador+:
ctrloucontrol- Tecla Controlshift- Tecla Shiftalt,opt,option, oumeta- Tecla Alt no Windows e Linux, tecla Option no macOScmd,command,super, ouwin- Tecla Command no macOS, tecla Windows no Windows, tecla Super no Linux
cmd é detectado apenas em terminais que relatam o modificador Super, como aqueles que suportam o protocolo de teclado Kitty ou o modo modifyOtherKeys do xterm. A maioria dos terminais não o envia, portanto use ctrl ou meta para atalhos de teclado que você deseja que funcionem em qualquer lugar.
Por exemplo:
Letras maiúsculas
Claude Code analisa nomes de teclas sem distinção entre maiúsculas e minúsculas, portantoK é o mesmo atalho de teclado que k e ctrl+K é o mesmo que ctrl+k. Para vincular Shift e uma letra, escreva shift+k.
Layouts de teclado não-US
Escreva os nomes das teclas de atalhos Ctrl como caracteres latinos mesmo quando seu layout de teclado ativo digita outros caracteres. A forma como Claude Code corresponde à tecla que você pressiona a um atalho de teclado depende do tipo de layout:- Sob um layout não-latino, como Cirílico, Claude Code corresponde aos atalhos de teclado Ctrl pela posição da tecla no layout US quando o terminal usa o protocolo de teclado Kitty e relata essa posição. Em tal terminal, com um layout russo ativo, pressionar Ctrl e a tecla W física dispara
ctrl+w. Em um terminal que não relata a posição, Claude Code corresponde ao que o terminal envia para o pressionamento de tecla: um código de controle ASCII dispara o atalho de teclado latino, e um pressionamento de tecla que chega como o caractere cirílico não corresponde a nenhum atalho de teclado - Sob layouts que reorganizam letras latinas, como AZERTY, Claude Code corresponde à letra que a tecla digita, portanto pressionar Ctrl e a tecla rotulada A dispara
ctrl+a
Acordes
Acordes são sequências de sequências de teclas separadas por espaços:Teclas especiais
escapeouesc- Tecla Escapeenteroureturn- Tecla Entertab- Tecla Tabspace- Barra de espaçoup,down,left,right- Teclas de setapageup,pagedown- Teclas Page Up e Page Downhome,end- Teclas Home e Endbackspace,delete- Teclas de exclusãowheelup,wheeldown- Eventos de rolagem da roda do mouse
Desassociar atalhos de teclado padrão
Defina uma ação comonull para desassociar um atalho de teclado padrão:
ctrl+x, por contexto:
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 =ectrl+x -Task:ctrl+x ctrl+bDiffPanel:ctrl+x bPane:ctrl+x left,ctrl+x right,ctrl+x up,ctrl+x downectrl+x xPaneField:ctrl+x x
ctrl+x enter requer v2.1.247 ou posterior, ctrl+x b, ctrl+x ctrl+a e ctrl+x tab requerem v2.1.260 ou posterior, e ctrl+x ctrl+s requer v2.1.275 ou posterior.
Para recuperar ctrl+x em si como um atalho de teclado de uma única tecla, desassocie todos eles:
Atalhos reservados
Estes atalhos não podem ser revinculados:Conflitos de terminal
Alguns atalhos podem entrar em conflito com multiplexadores de terminal:Campos de texto
Se você vincular uma letra simples, dígito ou Espaço, ainda poderá digitar esse caractere em um campo de texto dentro de um diálogo ou painel. Um desses campos é a respostaOther para uma pergunta que Claude faz. Enquanto o campo tem foco, uma tecla imprimível que você pressiona sem Ctrl, Alt ou Cmd vai para o campo, e Claude Code não a compara com seus vínculos.
Essas teclas ainda executam seus vínculos enquanto o campo tem foco:
- Teclas que não digitam um caractere, como Enter, Escape, Tab e as teclas de seta
- Qualquer tecla pressionada com Ctrl, Alt ou Cmd
- O segundo pressionamento de uma chord já em progresso
Chat, e digita a tecla apenas quando nenhum vínculo a utiliza.
Interação com modo vim
Quando você ativa o modo vim com a configuração Editor mode em/config, atalhos de teclado e modo vim operam independentemente:
- Modo vim manipula entrada no nível de entrada de texto: movimento do cursor, modos e motions
- Atalhos de teclado manipulam ações no nível de componente, como alternar tarefas ou enviar uma mensagem
- A tecla Escape no modo vim muda do modo INSERT para o modo NORMAL; ela não dispara
chat:cancel - A maioria dos atalhos Ctrl+key passam pelo modo vim para o sistema de atalhos de teclado
- As chaves vim não são remapeáveis através do arquivo de atalhos de teclado. Para mapear uma sequência de dois-key no modo INSERT como
jjpara Escape, use a configuraçãovimInsertModeRemaps - No modo NORMAL do vim,
?mostra o menu de ajuda (comportamento vim) - No modo NORMAL do vim,
/abre a busca de histórico, o mesmo que Ctrl+R no modo padrão
Other de uma pergunta feita por Claude, Escape não cancela a pergunta imediatamente no modo vim. Exceto no modo de leitor de tela, a linha começa no modo INSERT cada vez que você a foca. Quando você pressiona Escape na linha Other, a linha muda para o modo NORMAL ou descarta um comando vim digitado pela metade, e a pergunta permanece aberta. Pressione Escape novamente no modo NORMAL para cancelar a pergunta.
Cancelar uma pergunta com um único pressionamento de tecla
Para cancelar uma pergunta com um único pressionamento de tecla no modo vim, vincule outra tecla aselect:cancel no contexto Select. Você pode cancelar dessa forma a partir da linha Other de uma pergunta em que você seleciona uma opção. No modo de leitor de tela ou em uma pergunta em que você pode selecionar várias opções, a tecla vinculada não cancela, então cancele com Escape.
Escolha uma tecla que você pressiona com Ctrl ou Alt. Uma letra ou dígito isolado vai para a linha Other e não chega aos seus atalhos de teclado. Por exemplo, para vincular Ctrl+Q, adicione isto a ~/.claude/keybindings.json:
Ctrl+Q na linha Other de uma pergunta em que você seleciona uma opção. A pergunta é fechada, esteja a linha no modo INSERT ou NORMAL.
Validação
Claude Code valida seus atalhos de teclado e escreve um aviso no log de depuração para:- Erros de análise (JSON inválido ou estrutura)
- Modificadores com erro de digitação, como
ctl+k. Claude Code descarta a parte que não reconhece e aplica a vinculação ao pressionamento de tecla que permanece,kneste exemplo. - Um espaço ao lado de
+em uma string de tecla, comoctrl+ k. Claude Code lê a string como um acorde dectrl+seguido dek. Nenhum pressionamento de tecla corresponde actrl+sozinho, então a vinculação nunca é acionada. Remova o espaço. - Nomes de contexto inválidos
- Valores de ação inválidos, como uma ação que não é uma string ou
null - Nomes de ação desconhecidos, como um erro de digitação de uma ação registrada. Claude Code pula a vinculação e mantém qualquer vinculação padrão para essa tecla em vigor.
- Conflitos de atalho reservado
- Vinculações duplicadas no mesmo contexto
--debug para ver os detalhes.