메인 콘텐츠로 건너뛰기
Claude Code는 사용자 정의 가능한 키보드 단축키를 지원합니다. /keybindings를 실행하여 ~/.claude/keybindings.json에서 구성 파일을 만들거나 열 수 있습니다.

구성 파일

키보드 단축키 구성 파일은 bindings 배열을 가진 객체입니다. 각 블록은 컨텍스트와, 키 입력을 작업에 매핑하는 맵을 지정합니다.
키보드 단축키 파일의 변경 사항은 Claude Code를 다시 시작하지 않아도 자동으로 감지되어 적용됩니다.
다음 예시는 채팅 컨텍스트에서 외부 편집기를 여는 작업에 Ctrl+E를 바인딩하고, Ctrl+S의 바인딩을 해제합니다.

컨텍스트

각 바인딩 블록은 바인딩이 적용되는 컨텍스트를 지정합니다: v2.1.205 이전에는 /doctor 진단 화면에 대한 Doctor 컨텍스트와 doctor:fix 작업이 존재했습니다.

사용 가능한 작업

작업은 namespace:action 형식을 따르며, 예를 들어 메시지를 보내는 chat:submit 또는 작업 목록을 표시하는 app:toggleTodos와 같습니다. 각 컨텍스트에는 특정 작업이 사용 가능합니다.

앱 작업

Global 컨텍스트에서 사용 가능한 작업:

기록 작업

명령 기록을 탐색하기 위한 작업:

채팅 작업

Chat 컨텍스트에서 사용 가능한 작업: *VT 모드가 없는 Windows에서(Node <24.2.0/<22.17.0, Bun <1.2.23)는 기본값이 Meta+M입니다.

자동 완성 작업

Autocomplete 컨텍스트에서 사용 가능한 작업:

확인 작업

Confirmation 컨텍스트에서 사용 가능한 작업: *VT 모드가 없는 Windows에서(Node <24.2.0/<22.17.0, Bun <1.2.23)는 기본값이 Meta+M입니다. v2.1.257 이전에는 confirm:toggleExplanation 작업이 기본적으로 Ctrl+E에 바인딩되어 Bash 및 PowerShell 권한 프롬프트에서 명령의 모델 생성 설명을 표시했습니다. 대화 상자는 예/아니오 질문을 하지 않을 때도 confirm:yes 및 confirm:no를 사용하여 수락하고 취소합니다. 이 컨텍스트에서 y 또는 n과 같은 단순 문자를 바인딩하면 해당 문자도 키로 표시하지 않는 대화 상자에 작용합니다. y 및 n을 키로 표시하는 대화 상자는 해당 문자를 직접 읽고 바인딩이 필요하지 않습니다. 대부분의 대화 상자에서 Ctrl+C 또는 Ctrl+D를 두 번 누르면 Claude Code를 종료하는 대신 대화 상자를 닫습니다. 첫 번째 누름 후의 힌트는 두 번째 누름이 대화 상자를 닫는지 아니면 종료하는지 나타냅니다. 두 키 모두 예약됨이며 다시 바인딩할 수 없습니다. 이 예제는 y를 confirm:yes에, n을 confirm:no에 바인딩합니다:
이러한 바인딩을 사용하면 텍스트 필드에 포커스가 있을 때도 y 및 n이 문자로 입력됩니다. v2.1.280 이전에는 y도 기본적으로 confirm:yes에, n도 confirm:no에 바인딩되었습니다. v2.1.280 이전에 /keybindings로 keybindings.json을 생성한 경우 파일에 두 바인딩이 나열되고 해당 두 줄을 삭제할 때까지 유지됩니다.

권한 작업

권한 대화 상자에 대한 Confirmation 컨텍스트에서 사용 가능한 작업:

기록 작업

Transcript 컨텍스트에서 사용 가능한 작업: transcript:toggleShowAll은 클래식 렌더러에만 적용됩니다. 전체 화면 렌더링에서는 기록 뷰어가 모두 표시 전환을 제공하지 않습니다.

기록 검색 작업

HistorySearch 컨텍스트에서 사용 가능한 작업: historySearch:next, historySearch:accept, historySearch:cancel 및 historySearch:execute 기본값은 클래식 렌더러의 인라인 기록 검색에 적용되며, 이는 항상 모든 프로젝트의 프롬프트를 검색합니다. historySearch:cycleScope는 전체 화면 렌더링에서만 적용되며, 여기서 Ctrl+R은 검색 대화 상자를 열고 Ctrl+S는 범위를 순환합니다. 대화 상자의 다른 키는 고정되어 있으며 다시 바인딩할 수 없습니다: Enter 또는 Tab은 강조 표시된 일치 항목을 프롬프트 입력에 배치하고 Esc는 취소합니다.

작업 작업

Task 컨텍스트에서 사용 가능한 작업:

테마 작업

ThemePicker 컨텍스트에서 사용 가능한 작업:

도움말 작업

Help 컨텍스트에서 사용 가능한 작업:

탭 작업

Tabs 컨텍스트에서 사용 가능한 작업: 탭 대화 상자에서 tabs:next 및 tabs:previous는 탭 행에 포커스가 있을 때 탭을 전환합니다. /help 및 /sandbox와 같은 일부 대화 상자에서는 탭 전환 키가 탭의 콘텐츠 내부에서도 작동합니다. Up 및 Down은 탭 행과 탭의 콘텐츠 사이의 포커스를 이동하고, 콘텐츠의 목록은 포커스가 있을 때만 키에 응답합니다.

첨부 파일 작업

Attachments 컨텍스트에서 사용 가능한 작업: Footer 컨텍스트에서 사용 가능한 작업: 바닥글 항목이 선택되어 있을 때(예: 프롬프트 아래의 에이전트 패널의 행) Enter는 Chat 컨텍스트에서 Enter를 chat:queueSubmit 또는 chat:newline으로 다시 바인딩한 경우에도 열립니다. Chat 바인딩은 Footer 컨텍스트가 바인딩하지 않는 키(예: chat:cycleMode의 Shift+Tab)에서 항목이 선택되어 있을 때도 작동합니다.

메시지 선택기 작업

되감기 메뉴의 메시지 목록에서 선택 작업과 해당 기본 키를 사용하여 메시지를 이동하고 선택합니다. 해당 작업에 대한 Select 바인딩도 여기에 적용됩니다. MessageSelector 컨텍스트에는 자체 작업이나 기본 바인딩이 없습니다. 이 목록에만 키를 변경하려면 MessageSelector 블록에서 select:accept와 같은 선택 작업을 바인딩하세요. 이 예제는 다른 목록을 변경하지 않고 되감기 메뉴에서 강조 표시된 메시지를 선택하기 위해 o를 select:accept에 바인딩합니다:
v2.1.283 이전에는 이 목록이 Select 바인딩을 무시했으며 자체 작업이 있었습니다: messageSelector:up, messageSelector:down, messageSelector:top, messageSelector:bottom 및 messageSelector:select. keybindings.json이 해당 이름 중 하나를 바인딩하면 바인딩이 이 목록에서 동일한 작업을 수행하는 선택 작업으로 계속 작동합니다. Home 및 End는 목록의 양쪽 끝으로 이동합니다. v2.1.283 이전에는 Shift+K 및 Shift+J와 같은 키가 기본적으로 그렇게 했습니다.

차이 작업

이 작업들은 /plugin에서 cc-plugin-diff mod를 비활성화한 후 전체 화면 렌더링 외부에서 /diff가 여는 Claude Code의 이전 diff 뷰어에서만 작동합니다. 해당 mod가 활성화되어 있는 동안에는 /diff가 대신 diff 대화 상자를 엽니다. DiffDialog 컨텍스트에서 사용 가능한 작업: 파일 목록은 또한 선택 작업에 응답하며, 해당 기본 키와 Select 바인딩을 통해 응답합니다. select:previous 및 select:next는 이전 및 다음 파일로 이동하고, Enter는 select:accept를 통해 선택한 파일의 차이를 엽니다. 파일 목록에만 해당 키 중 하나를 변경하려면 DiffDialog 블록에서 선택 작업을 바인딩하세요. v2.1.283 이전에는 파일 목록이 Select 바인딩을 무시했으며, Enter는 별도의 diff:viewDetails 작업을 통해 선택한 파일의 차이를 열었습니다. keybindings.json이 diff:viewDetails를 바인딩하면 바인딩이 파일 목록에서 select:accept로 계속 작동합니다. 차이 상세 보기는 또한 페이저 스타일 키를 표준 스크롤 작업에 바인딩합니다. 이러한 바인딩은 DiffDialog 컨텍스트의 일부이며 상세 보기에만 적용됩니다. 스크롤 작업 아래에 나열된 Scroll 컨텍스트 기본값은 변경되지 않습니다.

차이 패널 작업

/diff가 전체 화면 렌더링에서 여는 diff 패널에 대한 작업입니다. app:cycleDiffBase는 패널이 열려 있을 때 활성화되는 DiffPanel 컨텍스트에 있습니다. 다른 것들은 Global입니다. 기본 제공 cc-plugin-diff mod가 이 패널을 그리고 app:cycleDiffBase, app:diffFileListUp 및 app:diffFileListDown을 처리합니다. app:toggleReplTab, app:toggleDiffNoiseFilter 및 app:toggleDiffPreSession은 /plugin에서 cc-plugin-diff를 비활성화한 후 /diff가 여는 Claude Code의 이전 패널에서만 작동합니다.

모델 선택기 작업

ModelPicker 컨텍스트에서 사용 가능한 작업:

노력 슬라이더 작업

EffortSlider 컨텍스트에서 사용 가능한 작업. 인수 없이 /effort를 실행할 때 열리는 슬라이더입니다. 슬라이더의 Enter 및 Escape 키는 다시 바인딩할 수 없습니다.

선택 작업

Select 컨텍스트에서 사용 가능한 작업: /skills, /mcp 및 /tasks와 같은 목록 패널에서 Claude Code는 select:pageUp, select:pageDown, select:first 및 select:last 바인딩을 적용합니다. /model 선택기와 같은 대부분의 다른 목록에서는 select:first 및 select:last 바인딩이 적용됩니다. PageUp 및 PageDown은 바인딩에 관계없이 해당 목록의 옵션을 페이징합니다. v2.1.280 이전에는 다른 목록들이 Home, End 및 select:first와 select:last 바인딩을 무시했습니다. v2.1.283 이전에는 /mcp 도구 목록이 바인딩에 관계없이 고정된 PageUp 및 PageDown 키로 페이징했습니다.

플러그인 작업

Plugin 컨텍스트에서 사용 가능한 작업:

프롬프트 위 영역 작업

프롬프트 위 영역에 대한 작업입니다. 이 영역은 mod가 버튼, 입력 필드, 선택 상자를 그리는 공유 스트립입니다. abovePrompt:toggle 및 abovePrompt:focus는 Chat 컨텍스트에서 적용됩니다. 다른 작업은 영역 또는 창에서 키보드 포커스를 가진 요소의 컨텍스트에서 적용됩니다. AbovePrompt 컨텍스트에서는 기본적으로 Right 및 Left도 abovePrompt:next 및 abovePrompt:previous를 실행하고, Space도 abovePrompt:press를 실행합니다. AbovePrompt 컨텍스트는 또한 Up, Down, PageUp, PageDown, Home 및 End를 창 스크롤 작업인 pane:scrollUp부터 pane:bottom까지에 바인딩하므로, 영역에 대해 해당 키 중 하나를 변경하려면 AbovePrompt 블록에서 스크롤 작업을 바인딩하세요.

창 작업

mod가 그리는 창(pane)에 대한 작업입니다. 스크롤, 크기 조정 및 닫기 작업은 Pane 컨텍스트에서 적용됩니다. pane:close는 PaneField 컨텍스트에서도 적용되므로 창의 필드 중 하나에 포커스가 있을 때도 작동합니다. pane:next 및 pane:previous는 둘 이상의 창이 열려 있을 때 Global 컨텍스트에서 적용됩니다. Pane 컨텍스트는 또한 Tab, Shift+Tab, Enter 및 Escape를 영역과 동일한 프롬프트 위 영역 작업에 바인딩하며, 창의 입력 필드와 선택 상자는 AbovePromptInput 및 AbovePromptSelect 컨텍스트를 사용합니다. 키보드 포커스 및 단축키에서 창에서 각 키가 수행하는 작업을 확인할 수 있습니다.

설정 작업

Settings 컨텍스트에서 사용 가능한 작업. select:accept 및 confirm:no 작업은 설정별 동작을 포함하여 선택 및 확인 컨텍스트에서 재사용됩니다: 변경 사항은 변경하는 즉시 각 설정에 적용되므로 Escape는 변경 사항이 저장된 상태로 패널을 닫습니다.

에이전트 작업

Agents 컨텍스트에서 사용 가능한 작업. claude agents로 열리는 에이전트 보기에 적용됩니다. v2.1.257 이상 필요합니다. 에이전트 보기가 열려 있을 때 Claude Code는 Agents 컨텍스트가 바인딩하는 모든 키에 대해 Agents 바인딩을 사용하고 동일한 키의 Chat 또는 Global 바인딩을 무시합니다. 예를 들어 에이전트 보기에서 Ctrl+S를 누르면 기본 chat:stash를 트리거하는 대신 세션 그룹화를 전환합니다. 디스패치 입력의 외부 편집기 바로 가기는 Agents 작업이 아닙니다. 에이전트 보기는 Chat 컨텍스트의 chat:externalEditor 바인딩(기본값 Ctrl+G)을 따릅니다. 바인딩은 에이전트 보기에서 단일 키 입력에서 발생하므로 chat:externalEditor에 바인딩된 Ctrl+X Ctrl+E 코드는 편집기를 열지 않습니다.

음성 작업

음성 받아쓰기가 활성화되어 있을 때 Chat 컨텍스트에서 사용 가능한 작업:

스크롤 작업

전체 화면 렌더링이 활성화되어 있을 때 Scroll 컨텍스트에서 사용 가능한 작업:

키 입력 구문

수정자

+ 구분자로 수정자 키를 사용합니다:
  • ctrl 또는 control - Control 키
  • shift - Shift 키
  • alt, opt, option, 또는 meta - Windows 및 Linux의 Alt 키, macOS의 Option 키
  • cmd, command, super, 또는 win - macOS의 Command 키, Windows의 Windows 키, Linux의 Super 키
cmd 그룹은 Kitty 키보드 프로토콜 또는 xterm의 modifyOtherKeys 모드를 지원하는 것과 같이 Super 수정자를 보고하는 터미널에서만 감지됩니다. 대부분의 터미널은 이를 전송하지 않으므로 모든 곳에서 작동하기를 원하는 바인딩에는 ctrl 또는 meta를 사용합니다. 예를 들어:

대문자

Claude Code는 키 이름을 대소문자를 구분하지 않고 파싱하므로 K는 k와 동일한 바인딩이고 ctrl+K는 ctrl+k와 동일합니다. Shift와 문자를 바인딩하려면 shift+k를 작성합니다.

비US 키보드 레이아웃

활성 키보드 레이아웃이 다른 문자를 입력하더라도 Ctrl 바로가기의 키 이름을 라틴 문자로 작성합니다. Claude Code가 누른 키를 바인딩과 일치시키는 방식은 레이아웃의 종류에 따라 다릅니다:
  • Cyrillic과 같은 비라틴 레이아웃에서 Claude Code는 터미널이 Kitty 키보드 프로토콜을 사용하고 해당 위치를 보고할 때 키의 US 레이아웃 위치로 Ctrl 바로가기를 일치시킵니다. 러시아어 레이아웃이 활성화된 그러한 터미널에서 Ctrl과 물리적 W 키를 누르면 ctrl+w가 트리거됩니다. 위치를 보고하지 않는 터미널에서 Claude Code는 키 입력에 대해 터미널이 전송하는 것과 일치합니다: ASCII 제어 코드는 라틴 바로가기를 트리거하고 Cyrillic 문자로 도착하는 키 입력은 바인딩과 일치하지 않습니다
  • AZERTY와 같이 라틴 문자를 재배열하는 레이아웃에서 Claude Code는 키가 입력하는 문자와 일치하므로 Ctrl과 A로 표시된 키를 누르면 ctrl+a가 트리거됩니다

코드

코드는 공백으로 구분된 키 입력 시퀀스입니다:
각 키 입력을 이전 키 입력 후 3초 이내에 누릅니다. 더 오래 기다리면 Claude Code는 코드를 취소하고 그렇게 했다는 짧은 알림을 표시합니다.

특수 키

  • escape 또는 esc - Escape 키
  • enter 또는 return - Enter 키
  • tab - Tab 키
  • space - 스페이스바
  • up, down, left, right - 화살표 키
  • pageup, pagedown - Page Up 및 Page Down 키
  • home, end - Home 및 End 키
  • backspace, delete - Delete 키
  • wheelup, wheeldown - 마우스 휠 스크롤 이벤트

기본 단축키 바인딩 해제

작업을 null로 설정하여 기본 단축키 바인딩을 해제합니다:
이는 코드 바인딩에도 작동합니다. 접두사를 공유하는 모든 코드를 바인딩 해제하면 해당 접두사를 단일 키 바인딩으로 사용할 수 있습니다. 활성 컨텍스트의 코드는 접두사를 예약된 상태로 유지하므로 해당 코드를 정의하는 컨텍스트에서 각 코드를 바인딩 해제해야 합니다. Claude Code는 ctrl+x 접두사에서 컨텍스트별로 다음과 같은 기본 코드를 바인딩합니다:
  • 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 =, ctrl+x -
  • Task: ctrl+x ctrl+b
  • DiffPanel: ctrl+x b
  • Pane: ctrl+x left, ctrl+x right, ctrl+x up, ctrl+x down, ctrl+x x
  • PaneField: ctrl+x x
ctrl+x enter 코드는 v2.1.247 이상이 필요하며, ctrl+x b, ctrl+x ctrl+a, ctrl+x tab은 v2.1.260 이상이 필요하고, ctrl+x ctrl+s는 v2.1.275 이상이 필요합니다. ctrl+x 자체를 단일 키 바인딩으로 되찾으려면 모두 바인딩 해제합니다:
접두사의 일부 코드만 바인딩 해제하고 모두 바인딩 해제하지 않으면 접두사를 누르면 여전히 남은 바인딩에 대한 코드 대기 모드로 진입합니다.

예약된 단축키

이러한 단축키는 다시 바인딩할 수 없습니다:

터미널 충돌

일부 단축키는 터미널 멀티플렉서와 충돌할 수 있습니다:

텍스트 필드

맨 글자, 숫자 또는 스페이스를 바인딩하면, 대화 상자나 패널 내의 텍스트 필드에서 여전히 해당 문자를 입력할 수 있습니다. 이러한 필드 중 하나는 Claude가 질문하는 Other 답변입니다. 필드에 포커스가 있는 동안, Ctrl, Alt 또는 Cmd 없이 누르는 인쇄 가능한 키는 필드로 이동하며, Claude Code는 바인딩과 일치시키지 않습니다. 이러한 키는 필드에 포커스가 있는 동안에도 바인딩을 실행합니다:
  • Enter, Escape, Tab 및 화살표 키와 같이 문자를 입력하지 않는 키
  • Ctrl, Alt 또는 Cmd와 함께 누르는 모든 키
  • 이미 진행 중인 코드의 두 번째 키 입력
주 프롬프트에서 Claude Code는 모든 키를 Chat과 같은 활성 컨텍스트와 비교하고, 바인딩이 키를 가져가지 않을 때만 키를 입력합니다.

Vim 모드 상호 작용

/config의 편집기 모드 설정으로 vim 모드를 활성화하면 키보드 단축키와 vim 모드는 독립적으로 작동합니다:
  • Vim 모드는 텍스트 입력 수준에서 입력을 처리합니다: 커서 이동, 모드, 모션
  • 키보드 단축키는 할 일 전환이나 메시지 제출과 같은 작업을 구성 요소 수준에서 처리합니다.
  • vim 모드에서 Escape 키는 INSERT 모드를 NORMAL 모드로 전환하며, chat:cancel을 트리거하지 않습니다
  • 대부분의 Ctrl+key 단축키는 vim 모드를 통과하여 키바인딩 시스템으로 이동합니다.
  • Vim 키는 키바인딩 파일을 통해 다시 매핑할 수 없습니다. jj를 Escape로 매핑하는 것과 같은 두 키 INSERT 모드 시퀀스를 매핑하려면 vimInsertModeRemaps 설정을 사용합니다.
  • vim NORMAL 모드에서 ?는 도움말 메뉴를 표시합니다(vim 동작).
  • vim NORMAL 모드에서 /는 히스토리 검색을 열며, 표준 모드의 Ctrl+R과 동일합니다.
Claude가 묻는 질문의 Other 행에서는 vim 모드일 때 Escape를 눌러도 질문이 바로 취소되지 않습니다. 화면 읽기 프로그램 모드가 아닌 경우, 이 행은 포커스될 때마다 INSERT 모드로 시작합니다. Other 행에서 Escape를 누르면 행이 NORMAL 모드로 전환되거나 입력하던 vim 명령이 취소되며, 질문은 열린 상태로 유지됩니다. 질문을 취소하려면 NORMAL 모드에서 Escape를 한 번 더 누릅니다.

키 한 번으로 질문 취소하기

vim 모드에서 키 한 번으로 질문을 취소하려면 Select 컨텍스트에서 다른 키를 select:cancel에 바인딩합니다. 이 방법은 옵션 하나를 선택하는 질문의 Other 행에서 사용할 수 있습니다. 화면 읽기 프로그램 모드이거나 여러 옵션을 선택할 수 있는 질문에서는 바인딩된 키로 취소되지 않으므로 Escape로 취소합니다. Ctrl 또는 Alt와 함께 누르는 키를 선택합니다. 단독 문자나 숫자는 바인딩에 전달되지 않고 대신 Other 행으로 입력됩니다. 예를 들어 Ctrl+Q를 바인딩하려면 ~/.claude/keybindings.json에 다음을 추가합니다:
파일을 저장한 후 옵션 하나를 선택하는 질문의 Other 행에서 Ctrl+Q를 누릅니다. 행이 INSERT 모드이든 NORMAL 모드이든 질문이 닫힙니다.

유효성 검사

Claude Code는 키보드 단축키의 유효성을 검사하며, 다음과 같은 경우 디버그 로그에 경고를 기록합니다.
  • 구문 분석 오류(잘못된 JSON 또는 구조)
  • ctl+k와 같이 철자가 잘못된 수정자 키. Claude Code는 해당 바인딩 전체를 무시합니다. 수정자 키를 올바르게 고치세요. 이 예에서는 ctrl+k로 수정합니다.
  • ctrl+ k와 같이 키 문자열에서 + 옆에 공백이 있는 경우. Claude Code는 이 문자열을 ctrl+ 다음에 k가 오는 코드로 읽습니다. ctrl+ 단독과 일치하는 키 입력은 없으므로 이 바인딩은 절대 실행되지 않습니다. 공백을 제거하세요.
  • 잘못된 컨텍스트 이름
  • 문자열도 null도 아닌 작업과 같은 잘못된 작업 값
  • 등록된 작업 이름의 오타와 같은 알 수 없는 작업 이름. Claude Code는 해당 바인딩을 건너뛰고 그 키에 대한 기본 바인딩을 계속 적용합니다.
  • 예약된 단축키 충돌
  • 동일한 컨텍스트 내의 중복 바인딩
자세한 내용을 확인하려면 --debug 옵션으로 Claude Code를 시작합니다.