Claude Codeのキーバインディング
keybindings.jsonを通じてClaude Codeのショートカットを変更できます。17のコンテキスト、キーストローク構文、コードシーケンス、モディファイアスタック、デフォルトのアンバインド、すぐに貼り付けられる設定例を解説します。
設定をやめて、構築を始めよう。
AIオーケストレーション付きSaaSビルダーテンプレート。
Ctrl+Kを押せばコマンドパレットが開く、そう指が覚えています。Claude Codeは別の動作をします。その誤った反射のたびに、一瞬の思考とフローの中断が生じます。
そのコストは積み重なります。長いClaude Codeセッションは筋肉の記憶で動いており、悪いデフォルト設定がそのキーストロークごとに筋肉の記憶と戦います。VS Code、Vim、Emacsの長年の習慣はコマンドで消えません。他人のショートカットレイアウトに合わせて手を再訓練するのは無駄な努力です。
修正方法は組み込まれています。コンテキストで整理された1つのJSONファイルで、気になるすべてのショートカットを管理できます。コードシーケンス、モディファイアスタック、デフォルトを完全に無効にするオプションも使えます。保存した瞬間に変更が有効になります。ツールが自分のものに感じられるよう設定する方法を説明します。
カスタムキーバインディングの最初のステップ
Claude Codeの中で/keybindingsと入力します。このスラッシュコマンドが~/.claude/keybindings.jsonを作成または開きます。ファイルは他の設定と同じく通常の~/.claude/フォルダに保存されます。
ファイルの形は単純です:
{
"$schema": "https://platform.claude.com/docs/schemas/claude-code/keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+e": "chat:externalEditor",
"ctrl+u": null
}
}
]
}3つのトップレベルキーがすべてを担います:
$schema- オプション。JSON SchemaのURLを指定するとエディタが無料のオートコンプリートとバリデーションを提供します。残しておく価値があります。$docs- オプション。素早い参照のためのドキュメントリンク。bindings- ショートカットが入る配列。コンテキストごとに1エントリ。
このschemaフィールドには地味なメリットがあります。JSON Schemaをサポートするエディタが、入力中に有効なアクションとコンテキスト名を提案してくれます。
保存したファイルはその場で反映されます。編集して保存すれば、新しいバインディングがすぐに機能します。再起動不要です。
コンテキストの仕組み
各バインディングはコンテキストの中に置かれ、コンテキストがそのショートカットが有効なタイミングを決定します。Chatバインディングはメインのチャット入力にフォーカスがある場合のみ起動します。コンテキストをまたいで同じキーを再利用すれば、それぞれ異なる動作をさせることができます。
Claude Codeには17のコンテキストがあります:
| コンテキスト | 有効なタイミング |
|---|---|
Global | アプリのどこでも |
Chat | メインのチャット入力エリア |
Autocomplete | オートコンプリートメニューが開いている |
Settings | 設定メニューが開いている |
Confirmation | 権限と確認ダイアログ |
Tabs | タブナビゲーションコンポーネント |
Help | ヘルプメニューが表示されている |
Transcript | トランスクリプトビューアー |
HistorySearch | 履歴検索モード(Ctrl+R) |
Task | バックグラウンドタスクが実行中 |
ThemePicker | テーマピッカーダイアログ |
Attachments | 画像/添付ファイルバーのナビゲーション |
Footer | フッターインジケーターのナビゲーション |
MessageSelector | 巻き戻しダイアログのメッセージ選択 |
DiffDialog | Diffビューアーのナビゲーション |
ModelPicker | モデルピッカーの努力レベル |
Select | 汎用のセレクト/リストコンポーネント |
Plugin | プラグインダイアログ(ブラウズ、発見、管理) |
Globalは特別です。ここのショートカットはどのビューにいても起動します。注意して使いましょう。グローバルのCtrl+Kは、チャット内でも、オートコンプリート内でも、diffのレビュー中でもトリガーされます。
すべてのアクション一覧
アクション名はnamespace:actionパターンに従います。以下はすべてのコンテキストにある、デフォルトキーとともにすべてのアクションです。
グローバルアクション
どこからでも起動します:
| アクション | デフォルト | 動作 |
|---|---|---|
app:interrupt | Ctrl+C | 現在の操作をキャンセル |
app:exit | Ctrl+D | Claude Codeを終了 |
app:toggleTodos | Ctrl+T | タスクリストの表示を切り替え |
app:toggleTranscript | Ctrl+O | 詳細トランスクリプトを切り替え |
タスクリストをよく使うユーザーはapp:toggleTodosを一日中使います。Ctrl+Tがターミナルと衝突する場合は、別の場所に移動させましょう。
チャットアクション
ほとんどのキーストロークが着地する場所:
| アクション | デフォルト | 動作 |
|---|---|---|
chat:cancel | Escape | 現在の入力をキャンセル |
chat:cycleMode | Shift+Tab | 権限モードを切り替え |
chat:modelPicker | Cmd+P / Meta+P | モデルピッカーを開く |
chat:thinkingToggle | Cmd+T / Meta+T | 拡張思考を切り替え |
chat:submit | Enter | メッセージを送信 |
chat:undo | Ctrl+_ | 最後のアクションを元に戻す |
chat:externalEditor | Ctrl+G | 外部エディタで開く |
chat:stash | Ctrl+S | 現在のプロンプトをスタッシュ |
chat:imagePaste | Ctrl+V(WindowsではAlt+V) | 画像を貼り付け |
VTモードのないWindowsでは、chat:cycleModeはMeta+Mにフォールバックします。これはNode.js 24.2.0/22.17.0より古いビルドおよびBun 1.2.23より古いバージョンに適用されます。このショートカットは権限モードを制御し、Claudeが許可される操作をゲートします。
履歴アクション
過去のプロンプトを遡る:
| アクション | デフォルト | 動作 |
|---|---|---|
history:search | Ctrl+R | 履歴検索を開く |
history:previous | Up | 前の履歴アイテム |
history:next | Down | 次の履歴アイテム |
オートコンプリートアクション
候補メニューが開いている間に有効:
| アクション | デフォルト | 動作 |
|---|---|---|
autocomplete:accept | Tab | 候補を承認 |
autocomplete:dismiss | Escape | メニューを閉じる |
autocomplete:previous | Up | 前の候補 |
autocomplete:next | Down | 次の候補 |
確認アクション
権限と承認ダイアログのバインディング:
| アクション | デフォルト | 動作 |
|---|---|---|
confirm:yes | Y, Enter | アクションを確認 |
confirm:no | N, Escape | アクションを拒否 |
confirm:previous | Up | 前のオプション |
confirm:next | Down | 次のオプション |
confirm:nextField | Tab | 次のフィールド |
confirm:previousField | (未割り当て) | 前のフィールド |
confirm:cycleMode | Shift+Tab | 権限モードを切り替え |
confirm:toggleExplanation | Ctrl+E | 権限の説明を切り替え |
permission:toggleDebug | Ctrl+D | 権限デバッグ情報を切り替え |
トランスクリプトアクション
| アクション | デフォルト | 動作 |
|---|---|---|
transcript:toggleShowAll | Ctrl+E | すべてのコンテンツ表示を切り替え |
transcript:exit | Ctrl+C, Escape | トランスクリプトビューを終了 |
履歴検索アクション
| アクション | デフォルト | 動作 |
|---|---|---|
historySearch:next | Ctrl+R | 次の一致 |
historySearch:accept | Escape, Tab | 選択を承認 |
historySearch:cancel | Ctrl+C | 検索をキャンセル |
historySearch:execute | Enter | 選択したコマンドを実行 |
タスクアクション
| アクション | デフォルト | 動作 |
|---|---|---|
task:background | Ctrl+B | 現在のタスクをバックグラウンドへ |
テーマ、ヘルプ、設定アクション
| アクション | コンテキスト | デフォルト | 動作 |
|---|---|---|---|
theme:toggleSyntaxHighlighting | ThemePicker | Ctrl+T | シンタックスハイライトを切り替え |
help:dismiss | Help | Escape | ヘルプメニューを閉じる |
settings:search | Settings | / | 検索モードに入る |
settings:retry | Settings | R | 使用データの再読み込みを再試行 |
ナビゲーションアクション
タブ、添付ファイル、フッター、diff、モデルピッカー、セレクト、メッセージセレクターはすべてここにあります:
| アクション | コンテキスト | デフォルト | 動作 |
|---|---|---|---|
tabs:next | Tabs | Tab, Right | 次のタブ |
tabs:previous | Tabs | Shift+Tab, Left | 前のタブ |
attachments:next | Attachments | Right | 次の添付ファイル |
attachments:previous | Attachments | Left | 前の添付ファイル |
attachments:remove | Attachments | Backspace, Delete | 添付ファイルを削除 |
attachments:exit | Attachments | Down, Escape | 添付ファイルバーを終了 |
footer:next | Footer | Right | 次のフッターアイテム |
footer:previous | Footer | Left | 前のフッターアイテム |
footer:openSelected | Footer | Enter | 選択したアイテムを開く |
footer:clearSelection | Footer | Escape | 選択をクリア |
messageSelector:up | MessageSelector | Up, K | リストを上に移動 |
messageSelector:down | MessageSelector | Down, J | リストを下に移動 |
messageSelector:top | MessageSelector | Ctrl+Up, Shift+Up | 先頭にジャンプ |
messageSelector:bottom | MessageSelector | Ctrl+Down, Shift+Down | 末尾にジャンプ |
messageSelector:select | MessageSelector | Enter | メッセージを選択 |
diff:dismiss | DiffDialog | Escape | Diffビューアーを閉じる |
diff:previousSource | DiffDialog | Left | 前のdiffソース |
diff:nextSource | DiffDialog | Right | 次のdiffソース |
diff:previousFile | DiffDialog | Up | 前のファイル |
diff:nextFile | DiffDialog | Down | 次のファイル |
diff:viewDetails | DiffDialog | Enter | 詳細を表示 |
modelPicker:decreaseEffort | ModelPicker | Left | 努力レベルを下げる |
modelPicker:increaseEffort | ModelPicker | Right | 努力レベルを上げる |
select:next | Select | Down, J, Ctrl+N | 次のオプション |
select:previous | Select | Up, K, Ctrl+P | 前のオプション |
select:accept | Select | Enter | 選択を承認 |
select:cancel | Select | Escape | 選択をキャンセル |
plugin:toggle | Plugin | Space | プラグインを切り替え |
plugin:install | Plugin | I | プラグインをインストール |
キーストロークの構文
キーの組み合わせを定義する構文は見やすいものです。
モディファイア
モディファイアキーを対象キーに+で接続します:
ctrlまたはcontrol: Controlキーalt、opt、またはoption: Alt/Optionキーshift: Shiftキーmeta、cmd、またはcommand: Meta/Commandキー
いくつかの例:
ctrl+k Single modifier + key
shift+tab Shift + Tab
meta+p Command/Meta + P
ctrl+shift+c Multiple modifiers大文字とShift
裸の大文字はすでにShiftを意味します。バインディング内のKはshift+kと同じです。jとJ(またはkとK)が異なるアクションにマップされるVimスタイルのレイアウトに便利です。
1つの注意点。モディファイアが付くと、大文字小文字は区別されなくなります。ctrl+Kとctrl+kは同じバインディングです。モディファイアがある場合、大文字は見た目だけです。
コードシーケンス
コードはマルチキーのショートカットを提供します。キーストロークの間にスペースを入れます:
ctrl+k ctrl+s Press Ctrl+K, release, then press Ctrl+S
これにより単一キーのバインディングよりもはるかに多くの余裕が生まれます。使える未使用のキーコンボが少なくなってきた場合、コードは何もステップオンせずに数百の新しい選択肢を追加します。
特殊キー
文字以外のキーには独自の名前があります:
escapeまたはescenterまたはreturntabspaceup、down、left、rightbackspace、delete
デフォルトショートカットのオフ
アクションをnullに設定するとデフォルトが消えます:
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+s": null
}
}
]
}デフォルトがターミナル、OS、またはClaude Codeの隣で実行している別のツールと競合するときに便利です。デフォルトをnullにして同じキーに新しいアクションを割り当てることもできます。
予約済みショートカット
2つのキーはハードコードされており、変更できません:
| ショートカット | 理由 |
|---|---|
| Ctrl+C | ハードコードされた中断/キャンセル |
| Ctrl+D | ハードコードされた終了 |
Claude Codeはこれらを変更する試みを拒否します。これは正しい判断です。すべてのターミナルユーザーはCtrl+Cが中断し、Ctrl+Dが終了することを期待しています。これらはUnixの慣習です。
ターミナルマルチプレクサとの競合
tmux、GNU screen、または類似のマルチプレクサ内でClaude Codeを実行している場合、プレフィックスキーが問題を起こします:
| ショートカット | 競合 |
|---|---|
| Ctrl+B | tmuxのプレフィックス(通過させるには2回押す) |
| Ctrl+A | GNU screenのプレフィックス |
| Ctrl+Z | UnixのプロセスサスペンドSIGTSTP) |
task:backgroundはデフォルトでCtrl+Bに設定されており、これはtmuxのプレフィックスと完全に一致します。tmuxを使っている場合は初日に変更しましょう:
{
"bindings": [
{
"context": "Task",
"bindings": {
"ctrl+b": null,
"ctrl+shift+b": "task:background"
}
}
]
}この競合は、マルチプレクスされたセッション内でClaude Codeを実行する多くの開発者を悩ませています。
Vimモードとの相互作用
/vimでvimモードをオンにすると、キーバインディングとは別のレイヤーで動作します:
- Vimモード: テキスト編集を担当します。カーソル移動、INSERTとNORMALモード、モーション、テキストオブジェクト。
- キーバインディング: アプリレベルのアクションを担当します。タスクリストの切り替え、メッセージの送信、モデルピッカーのオープン。
Escapeキーが最も明確な分岐点です。vimモード内では、EscapeはINSERTを抜けてNORMALに入ります。chat:cancelは呼び出されません。ほとんどのCtrl+keyショートカットはvimモードをそのまま通過してキーバインディングレイヤーに入るため、NORMALモードからでもCtrl+Tがタスクリストを切り替えます。
NORMALモードでは、?はClaude Codeのヘルプ画面ではなく、vimスタイルのヘルプを表示します。
vimモードで思考モードをよく使う場合は、chat:thinkingToggleをvimのモーションと衝突しないコードに配置しましょう。インタラクティブモードガイドでは、vimモード、スラッシュコマンド、その他のインタラクティブ機能がどのように組み合わさるかを説明しています。
バリデーションと診断
Claude Codeは保存ごとにキーバインディングファイルをチェックし、以下をフラグします:
- JSON構文または構造の解析エラー
- サポートされている17のコンテキストと一致しない無効なコンテキスト名
- Ctrl+CまたはCtrl+Dを変更しようとする予約済みショートカットの競合
- Ctrl+B、Ctrl+A、Ctrl+Zのターミナルマルチプレクサとの競合
- 同じコンテキスト内の重複したバインディング
/doctorを実行すると、すべてのキーバインディング警告が一覧表示されます。ショートカットが誤動作する原因を特定するための最短経路です。
実用的な設定例
実際の使用環境から引用したいくつかの設定です。
VS Codeユーザー向けの設定
VS Codeから来てよく使うショートカットを戻したい場合:
{
"$schema": "https://platform.claude.com/docs/schemas/claude-code/keybindings.json",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+k ctrl+s": "chat:stash",
"ctrl+shift+p": "chat:modelPicker",
"ctrl+g": "chat:externalEditor"
}
},
{
"context": "Global",
"bindings": {
"ctrl+shift+t": "app:toggleTodos"
}
}
]
}tmuxフレンドリーな設定
tmuxのプレフィックスとの衝突を回避します:
{
"$schema": "https://platform.claude.com/docs/schemas/claude-code/keybindings.json",
"bindings": [
{
"context": "Task",
"bindings": {
"ctrl+b": null,
"ctrl+shift+b": "task:background"
}
}
]
}最小限の干渉設定
誤って押してしまうショートカットを削除します:
{
"$schema": "https://platform.claude.com/docs/schemas/claude-code/keybindings.json",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+s": null,
"ctrl+u": null
}
}
]
}コードベースのパワーユーザー設定
よく使わない機能をコードに配置して、単一キーのコンボを解放します:
{
"$schema": "https://platform.claude.com/docs/schemas/claude-code/keybindings.json",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+k ctrl+t": "chat:thinkingToggle",
"ctrl+k ctrl+m": "chat:modelPicker",
"ctrl+k ctrl+e": "chat:externalEditor"
}
}
]
}最もよく使うアクションが1キーのバインディングをキープします。それ以外はコード1つで呼び出せます。
独自の設定を構築する
ゆっくり進めましょう。アプリ全体を一度に変更するのは罠です。より賢明なアプローチを紹介します:
/keybindingsを実行して設定ファイルを生成する- 最悪の3つの問題点を選ぶ(ショートカットの衝突、欠けているバインディング、誤動作)
- まずその3つを修正するターゲットを絞ったエントリで
/doctorを実行してファイルを検証する- Claude Codeのフルセッションを費やすと何がまだひっかかるかメモする
- 繰り返し改善する摩擦が現れたらバインディングを追加または調整する
すべての可能なショートカットをカスタマイズすることは目標ではありません。目標は、手が期待することとClaude Codeが実行することのギャップを閉じることです。5〜10個のバインディングで通常はツールが自分のものとして感じられるようになります。
キーバインディングは物理的な側面を担います。CLAUDE.mdとカスタムスラッシュコマンドが動作面を担います。これらを組み合わせると、Claude Codeがあなたのワークフローに合わせて構築されたかのように感じられます。
設定をやめて、構築を始めよう。
AIオーケストレーション付きSaaSビルダーテンプレート。