Claude Codeのキーボードショートカットをカスタマイズする

Claude Code エンジニアリング 9分で読めます

Claude Code のキーボードショートカットは、設定ファイルで自由に付け替えられます。設定ファイルは ~/.claude/keybindings.json で、Claude Code のなかで /keybindings を実行すると作成または既存ファイルのオープンが行われます。ファイルを保存すると変更は自動で検出され、Claude Code を再起動する必要はありません。この記事は 公式ドキュメントの「Customize keyboard shortcuts」(2026年9月11日に確認)にもとづいています。

設定ファイルの形

設定ファイルは bindings という配列を持つオブジェクトです。配列の各要素を「ブロック」と呼び、1つのブロックが 1つのコンテキストと、キー打鍵からアクションへの対応表を持ちます。

フィールド説明
$schema任意。エディタの補完用の JSON Schema の URL
$docs任意。ドキュメントの URL
bindingsコンテキストごとのブロックの配列

次の例は、チャット入力欄で Ctrl+E に「外部エディタで開く」を割り当て、Ctrl+U の既定の割り当てを外します。

{
  "$schema": "https://www.schemastore.org/claude-code-keybindings.json",
  "$docs": "https://code.claude.com/docs/en/keybindings",
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+e": "chat:externalEditor",
        "ctrl+u": null
      }
    }
  ]
}

ここで押さえるのは3点です。キーは小文字の文字列値はアクション名の文字列、そして値を null にすると既定の割り当てが外れる、という形です。

コンテキスト: どの画面で効かせるか

同じ Ctrl+E でも、チャット入力中と差分ビューアを開いているときでは意味を変えたいことがあります。context はそのための仕組みで、そのブロックの割り当てがどの画面で有効かを決めます。

公式ドキュメントが挙げているコンテキストは次のとおりです。

コンテキスト有効な場所
Globalアプリ全体
Chatメインのチャット入力欄
Autocomplete補完メニューが開いているとき
Settings設定メニュー
Confirmation権限・確認ダイアログ
Tabsタブ移動の部品
Helpヘルプメニュー表示中
Transcriptトランスクリプトビューア
HistorySearch履歴検索モード(Ctrl+R)
Taskバックグラウンドタスクの実行中
ThemePickerテーマ選択ダイアログ
Attachments選択ダイアログでの画像添付の移動
Footerフッターのインジケータ移動(タスク・チーム・差分・アーティファクト)
MessageSelector巻き戻し・要約ダイアログのメッセージ選択
DiffDialog差分ビューアの移動
DiffPanel差分パネルが開いているとき
ModelPickerモデル選択のエフォート段階
EffortSlider/effort で開くエフォートのスライダー
Select汎用の選択・一覧部品
Pluginプラグインのダイアログ
Agentsエージェントビュー(claude agents
Scroll全画面表示での会話スクロールとテキスト選択

バージョンによる差もあります。/doctor の診断画面向けの Doctor コンテキストと doctor:fix アクションは、v2.1.205 より前にだけ存在していました

アクション: 何を起こすか

アクションは 名前空間:動作 という形の文字列です。名前空間はおおむねコンテキストに対応し、たとえばメッセージ送信は chat:submit、タスク一覧の表示切り替えは app:toggleTodos です。

Global コンテキストで使える主なアクションは次のとおりです。

アクション既定説明
app:interruptCtrl+C実行中の処理を中断
app:exitCtrl+DClaude Code を終了(800ms 以内に2回押すと確定)
app:redraw(未割り当て)端末の再描画を強制
app:toggleTodosCtrl+TClaude の ToDo リストの表示切り替え。/tasks のバックグラウンドタスク画面とは別物
app:toggleTranscriptCtrl+O詳細トランスクリプトの表示切り替え

履歴移動は独立した名前空間です。history:search(既定 Ctrl+R)、history:previous(Up)、history:next(Down)の3つがあります。

Chat コンテキストのアクションは数が多く、日常的に触る部分です。主なものを挙げます。

アクション既定説明
chat:cancelEscape入力中の内容を取り消す
chat:clearInputCtrl+L入力と会話を保ったまま全画面を再描画。全画面表示では画面もクリアする
chat:clearScreenCmd+Kchat:clearInput と同じ
chat:killAgentsCtrl+X Ctrl+Kこのセッションのバックグラウンドサブエージェントを全部止め、以降アーティファクトの自動返信も切る
chat:cycleModeShift+Tab権限モードを順に切り替える
chat:modelPickerMeta+Pモデル選択を開く
chat:fastModeMeta+Oファストモードの切り替え
chat:thinkingToggleMeta+T拡張思考の切り替え
chat:submitEnterメッセージを送信
chat:queueSubmitCtrl+X Enter順番待ちとして送信。Claude が作業中でもターンに割り込まず、キューに積まれる。補完候補が選択状態でも下書きを送る。v2.1.247 以降
chat:newlineCtrl+J送信せずに改行を入れる
chat:undoCtrl+_, Ctrl+Shift+-直前の操作を取り消す
chat:externalEditorCtrl+G, Ctrl+X Ctrl+E外部エディタで開く

1つのアクションに既定の割り当てが2つあることがある点に注意してください。chat:undochat:externalEditor がそれです。

キーの書き方(修飾キー・特殊キー)

修飾キーは + でつなぎます。名前には別名があり、どれを書いても同じです。

cmd 系は多くの端末で使えません。Super 修飾を報告する端末(Kitty キーボードプロトコル対応や xterm の modifyOtherKeys モード)でしか検出されないためです。どの環境でも動かしたい割り当てには ctrlmeta を使ってください。

ctrl+k          Ctrl + K
shift+tab       Shift + Tab
meta+p          macOS では Option + P、それ以外では Alt + P
ctrl+shift+c    修飾キーの組み合わせ

キー名の大文字と小文字は区別されません。Kkctrl+Kctrl+k は同じものです。Shift と文字の組み合わせを割り当てたいときは shift+k と明示的に書きます。

特殊キーには次の名前を使います。

US 配列以外を使っている場合、Ctrl 系ショートカットのキー名はラテン文字で書きます。実際に押されたキーとの照合のしかたは配列の種類で変わります。キリル文字のような非ラテン配列では、Kitty キーボードプロトコルを使う端末が物理キーの位置を報告する場合、US 配列上の位置で照合されます(ロシア語配列で物理的な W キーを Ctrl と押すと ctrl+w になります)。位置を報告しない端末では、端末が送ってきたものがそのまま照合されるため、ASCII 制御コードならラテン文字のショートカットが動き、キリル文字として届いた打鍵はどの割り当てにも一致しません。AZERTY のようにラテン文字の並びを変えただけの配列では、キーが打つ文字で照合されるので、A と刻印されたキーを Ctrl と押せば ctrl+a になります。なお v2.1.247 より前は、Kitty キーボードプロトコルを使う端末(Ghostty・Kitty・WezTerm・iTerm2)で非ラテン配列のとき Ctrl 系が発火しませんでした。

和音(chord)で2打鍵にする

打鍵をスペースで区切ると、順番に押す和音になります。

ctrl+k ctrl+s   Ctrl+K を押して離し、続けて Ctrl+S

次の打鍵は前の打鍵から3秒以内に行う必要があります。それより長く待つと和音は取り消され、その旨の短い通知が出ます。

和音は、単打鍵が足りなくなったときの逃げ道になります。Ctrl と文字の組み合わせは26通りしかなく、そのうち後述の予約キーは使えないので、実際に空いている枠はもっと少ないためです。

既定のショートカットを外す

アクションの代わりに null を書くと、その既定の割り当てが外れます。

{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+s": null
      }
    }
  ]
}

ここには和音のプレフィックスという落とし穴があります。ある接頭辞を単打鍵の割り当てとして使いたい場合、その接頭辞を共有する和音を1つ残らず外す必要があります。有効なコンテキストに和音が1つでも残っていると、その接頭辞は予約されたままです。しかも和音はそれを定義しているコンテキストごとに外す必要があります。

Claude Code が既定で ctrl+x を接頭辞にしている和音は、Chatctrl+x ctrl+k / ctrl+x ctrl+e / ctrl+x enter / ctrl+x ctrl+a / ctrl+x tabTaskctrl+x ctrl+bDiffPanelctrl+x b です(ctrl+x enter は v2.1.247 以降、ctrl+x b / ctrl+x ctrl+a / ctrl+x tab は v2.1.260 以降)。ctrl+x 自体を単打鍵として取り戻すには、これらを全部外します。

{
  "bindings": [
    {
      "context": "Task",
      "bindings": { "ctrl+x ctrl+b": null }
    },
    {
      "context": "DiffPanel",
      "bindings": { "ctrl+x b": null }
    },
    {
      "context": "Chat",
      "bindings": {
        "ctrl+x ctrl+k": null,
        "ctrl+x ctrl+e": null,
        "ctrl+x enter": null,
        "ctrl+x ctrl+a": null,
        "ctrl+x tab": null,
        "ctrl+x": "chat:newline"
      }
    }
  ]
}

一部だけ外した場合は、接頭辞を押すと残った和音のために待機状態に入ります。「外したはずなのに反応が一拍遅れる」と感じたら、外し漏れた和音が別のコンテキストに残っていないか確認してください。

変えられないキーと、ぶつかるキー

次のショートカットは割り当てを変更できません。理由はそれぞれ違います。

ショートカット理由
Ctrl+C中断・キャンセルとして固定されている
Ctrl+D終了として固定されている
Ctrl+MClaude Code には常に Enter として届く
Ctrl+[常に Escape として届く(Kitty キーボードプロトコルを使う端末では v2.1.242 以降)
Ctrl+I常に Tab として届く
Ctrl+HASCII のバックスペースバイトを送る。Windows での読み取り方は端末と CLAUDE_CODE_BS_AS_CTRL_BACKSPACE 環境変数で決まる
Caps Lock端末アプリケーションに届かない

変更はできても、端末マルチプレクサとぶつかるものもあります。Ctrl+B は tmux のプレフィックス(2回押すと送られます)、Ctrl+A は GNU screen のプレフィックス、Ctrl+Z は Unix のプロセス一時停止(SIGTSTP)です。tmux や screen の上で作業するなら、この3つは避けるのが無難です。

vim モードとの関係

/config の Editor mode で vim モードを有効にしている場合、キーバインドと vim モードは別々の層で動きます。vim モードはテキスト入力の層(カーソル移動・モード・モーション)を、キーバインドは部品の層(ToDo の表示切り替え・送信など)を扱います。

書き間違いをどう見つけるか

Claude Code はキーバインドファイルを検証し、次の場合に警告を出します。

アクション名を打ち間違えた場合、Claude Code はその割り当てを読み飛ばし、そのキーの既定の割り当てをそのまま有効に保ちます。この挙動は v2.1.246 で入ったもので、それより前は未知のアクション名を書くとそのキーが黙って無効になっていました。古いバージョンで「割り当てたはずのキーが何も起こさない」場合は、まずアクション名の綴りを疑ってください。

警告はファイル読み込み時に報告され、それぞれデバッグログにも書かれます。詳細を見るには --debug を付けて起動します。

claude --debug

まとめ

キーバインドの変更は、/keybindings でファイルを開き、contextキー打鍵: アクション を書くだけです。保存すれば再起動なしで反映されます。つまずきやすいのは次の4点です。

あわせて読むなら、画面下部の表示を変えるステータスラインのカスタマイズ、対話モードの既定のキー操作をまとめた対話モードのキーボードショートカット、ファイル全体の設定項目を扱う設定と権限が近い話題です。

出典: Customize keyboard shortcuts - Claude Code Docs(2026年9月11日確認)