/keybindings を実行して、~/.claude/keybindings.json に設定ファイルを作成または開きます。
設定ファイル
キーバインディング設定ファイルは、bindings 配列を持つオブジェクトです。各ブロックはコンテキストとキーストロークからアクションへのマップを指定します。
キーバインディングファイルへの変更は自動的に検出され、Claude Code を再起動することなく適用されます。
この例では、チャットコンテキストで
Ctrl+E を外部エディタを開くにバインドし、Ctrl+U をアンバインドします。
コンテキスト
各バインディングブロックは、バインディングが適用されるコンテキストを指定します。
v2.1.205 より前では、
Doctor コンテキストと /doctor 診断スクリーン用の doctor:fix アクションが存在していました。
利用可能なアクション
アクションはnamespace:action 形式に従います。例えば、chat:submit はメッセージを送信し、app:toggleTodos はタスクリストを表示します。各コンテキストには特定のアクションが利用可能です。
アプリアクション
Global コンテキストで利用可能なアクション:
履歴アクション
コマンド履歴をナビゲートするためのアクション:チャットアクション
Chat コンテキストで利用可能なアクション:
*VT モードなし(Node <24.2.0/<22.17.0、Bun <1.2.23)の Windows では、デフォルトは Meta+M です。
オートコンプリートアクション
Autocomplete コンテキストで利用可能なアクション:
確認アクション
Confirmation コンテキストで利用可能なアクション:
権限アクション
権限ダイアログのConfirmation コンテキストで利用可能なアクション:
トランスクリプトアクション
Transcript コンテキストで利用可能なアクション:
履歴検索アクション
HistorySearch コンテキストで利用可能なアクション:
タスクアクション
Task コンテキストで利用可能なアクション:
テーマアクション
ThemePicker コンテキストで利用可能なアクション:
ヘルプアクション
Help コンテキストで利用可能なアクション:
タブアクション
Tabs コンテキストで利用可能なアクション:
添付ファイルアクション
Attachments コンテキストで利用可能なアクション:
フッターアクション
Footer コンテキストで利用可能なアクション:
メッセージセレクタアクション
MessageSelector コンテキストで利用可能なアクション:
Diff アクション
DiffDialog コンテキストで利用可能なアクション:
Diff 詳細ビューは、ページャースタイルのキーを標準的なスクロールアクションにバインドします。これらのバインディングは
DiffDialog コンテキストの一部であり、詳細ビューにのみ適用されます。スクロールアクションの下に記載されている Scroll コンテキストのデフォルトは変わりません。
モデルピッカーアクション
ModelPicker コンテキストで利用可能なアクション:
選択アクション
Select コンテキストで利用可能なアクション:
プラグインアクション
Plugin コンテキストで利用可能なアクション:
設定アクション
Settings コンテキストで利用可能なアクション。select:accept と confirm:no アクションは選択と確認コンテキストから再利用されており、設定固有の動作があります:変更は設定を変更するとすぐに各設定に適用されるため、Escape は変更を破棄するのではなく、変更を保存して閉じます。
音声アクション
音声ディクテーションが有効な場合、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 グループは Super モディファイアを報告するターミナル(Kitty キーボードプロトコルまたは xterm の modifyOtherKeys モードをサポートするターミナルなど)でのみ検出されます。ほとんどのターミナルはこれを送信しないため、すべての場所で機能するバインディングには ctrl または meta を使用してください。
例えば:
大文字
スタンドアロンの大文字は Shift を意味します。例えば、K は shift+k と同等です。これは大文字と小文字のキーが異なる意味を持つ vim スタイルのバインディングに便利です。
モディファイア付きの大文字(例:ctrl+K)はスタイル的に扱われ、Shift を意味しません — ctrl+K は ctrl+k と同じです。
コード
コードはスペースで区切られたキーストロークのシーケンスです。特殊キー
escapeまたはesc- Escape キーenterまたはreturn- Enter キーtab- Tab キーspace- スペースバーup、down、left、right- 矢印キーbackspace、delete- Delete キー
デフォルトショートカットをアンバインド
アクションをnull に設定して、デフォルトショートカットをアンバインドします。
Ctrl+X ファミリーは 2 つのコンテキストにまたがります。Chat では ctrl+x ctrl+k と ctrl+x ctrl+e、Task では ctrl+x ctrl+b です。ctrl+x 自体を単一キー バインディングとして再利用するには、すべてをアンバインドします。
予約済みショートカット
これらのショートカットは再バインドできません。ターミナルの競合
一部のショートカットはターミナルマルチプレクサと競合する可能性があります。Vim モードの相互作用
Vim モードが/config → エディタモードで有効な場合、キーバインディングと Vim モードは独立して動作します。
- Vim モード はテキスト入力レベルで入力を処理します(カーソル移動、モード、モーション)
- キーバインディング はコンポーネントレベルでアクションを処理します(todos を切り替え、送信など)
- Vim モードの Escape キーは INSERT から NORMAL モードに切り替わります。
chat:cancelをトリガーしません - ほとんどの Ctrl+key ショートカットは Vim モードを通過してキーバインディングシステムに渡されます
- Vim キーはキーバインディングファイルを通じて再マップできません。
jjを Escape にマップするような 2 キーの INSERT モードシーケンスをマップするには、vimInsertModeRemaps設定を使用してください - Vim NORMAL モードでは、
?はヘルプメニューを表示します(Vim の動作) - Vim NORMAL モードでは、
/は履歴検索を開きます。標準モードの Ctrl+R と同じです
検証
Claude Code はキーバインディングを検証し、以下の警告を表示します。- 解析エラー(無効な JSON または構造)
- 無効なコンテキスト名
- 予約済みショートカットの競合
- ターミナルマルチプレクサの競合
- 同じコンテキスト内の重複バインディング
--debug で起動して、詳細を確認してください。