Claude Codeのキー操作は、keybindings.json で変えられます。
公式ドキュメントから、設定ファイルの作り方と書き方を整理しました。
- /keybindings で ~/.claude/keybindings.json を作って開く
- 変更は、再起動しなくても自動で反映される
- 解除したいキーは、値を null にする
- Ctrl+Cなど一部のキーは割り当て直せない
キー操作の実機での再現は含まず、公式ページの記載(2026年10月23日に再照合)に基づきます。
2026年10月18日に、Windows 11 で記事の例どおりの keybindings.json を練習用のフォルダーに作って中身を確かめ、Claude Code 2.1.289 の claude --help の関係する行と合わせて画像を追加しました。
Claude Code に読み込ませて、キーが実際に変わるかは確かめていません。
仕様や数値は変わることがあるので、最新は公式ページで確かめてください。
設定ファイルの作り方
Claude Codeで/keybindingsを実行すると、設定ファイル~/.claude/keybindings.jsonを新規作成または開きます。~はユーザーのホームで、作業フォルダー直下の.claudeではありません。既存のbindingsがある場合は内容を残して追加・変更します。
公式の例は、次の形です。
{
"$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+s": null
}
}
]
}bindings の配列に、コンテキストごとのブロックを並べます。
ブロックの中では、キーを左に、動作を右に書きます。
対象のコンテキストで値をnullにすると、そのキーの割り当てを解除できます。連続キーの先頭を単独キーとして使いたい場合は、その先頭を共有する連続キーを各コンテキストで解除する必要があります。
上の例をそのまま練習用のフォルダーの .claude フォルダーに keybindings.json として保存し、Windows PowerShell で表示しました。

Get-Content で中身を表示し、ConvertFrom-Json で JSON として読み込めるかを確かめています。
読み込んだ結果では、Chat のブロックの ctrl+e に chat:externalEditor が入り、null にした ctrl+s は値が空になりました。
これは JSON の書き方が正しいかを見ただけで、/keybindings は使っておらず、本物の設定のフォルダーにも置いていません。
コンテキスト
キーは、画面の状態(コンテキスト)ごとに割り当てます。
- Global:どこでも有効
- Chat:入力欄
- Autocomplete:補完の候補
- Settings:設定画面
- Confirmation:確認の画面
- Transcript:会話の記録
- HistorySearch:履歴の検索
ほかにも、Tabs、Help、Task、ThemePicker、Select、Plugin、Agents、Scrollなどがあります。
全一覧は公式ページにあります。
動作の名前と既定のキー
動作の名前は namespace:action の形です。
| 動作 | 既定のキー |
|---|---|
| chat:submit | Enter |
| chat:newline | Ctrl+J |
| chat:externalEditor | Ctrl+G、または Ctrl+X のあとに Ctrl+E |
| chat:stash | Ctrl+S |
| chat:cycleMode | Shift+Tab |
| chat:modelPicker | Meta+P |
| app:toggleTodos | Ctrl+T |
| app:toggleTranscript | Ctrl+O |
| history:search | Ctrl+R |
| chat:imagePaste | Ctrl+V(WindowsはAlt+V、WSLは両方) |
表の画像貼付けはWindowsではAlt+V、WSLではCtrl+VとAlt+Vの両方が既定で割り当てられます。Shift+Tabは古いWindowsランタイムでVTモードがない場合にMeta+Mとなる例外があります。動作名や既定キーはバージョン・端末によって異なります。
たとえば chat:queueSubmit は v2.1.247以降、chat:sendNow は v2.1.275以降と公式に書かれています。
例の$schemaが参照するSchemaStoreの定義を2026年10月23日に再取得したところ、chat:queueSubmitとchat:sendNowは動作一覧にありませんでした。エディター向け定義と本体の対応状況を分けて判断してください。
定義の一覧に無いことと、Claude Code で使えるかどうかは別の話で、使えるかどうかは確かめていません。
キーの書き方
- 修飾キーは + でつなぐ(ctrl、shift、alt、opt、option、meta、cmd、command、super、win)
- キー名の大文字と小文字は区別されない。Shift+Kならshift+kと書く
- 連続するキー(コード)は、スペースで区切る。例は ctrl+k ctrl+s
- 連続キーは、それぞれ3秒以内に押す
cmd系のキーは、Kittyプロトコルなど、Superキーを報告するターミナルでだけ有効です。
広く使うなら、ctrlかmetaが無難です。
割り当て直せないキー
次のキーは、割り当て直せません。
- Ctrl+C
- Ctrl+D
- Ctrl+M
- Ctrl+[
- Ctrl+I
- Ctrl+H
- Caps Lock
ターミナル側と衝突するキーもあります。
- Ctrl+B:tmuxが使う
- Ctrl+A:screenが使う
- Ctrl+Z:Unix系ではSIGTSTPによる一時停止になる
Vimモードのキー
Vimモードのキーは、keybindings.json では変えられません。
jjでEscapeにするような割り当ては、vimInsertModeRemaps の設定で行います。
うまく動かないとき
設定の解析エラーや未知の動作名などはデバッグログで確認できます。修飾キーの誤記にも注意してください。たとえばctl+kは不明な部分が落ちてkに割り当てられ、ctrl+ kのような空白は別の連続キーとして解釈されます。
claude --debug で起動して確かめます。
Claude Code 2.1.289 の claude --help から、デバッグの行と、自分で足した設定を外して起動する行を抜き出すと、次のように表示されます。

claude --help から -d, --debug・--debug-file・--safe-mode の行を抜き出した表示。-d(--debug)には、出すログの種類を絞る指定を付けられます(ヘルプの例は "api,hooks")。
--debug-file を付けると、ログを指定したファイルに書き出し、デバッグも有効になります。
--safe-mode は、CLAUDE.md・スキル・インストールしたプラグイン・フックなどを外して起動するオプションで、外すものの中に keybindings も入っています。
ヘルプには、壊れた設定の原因を探すときに使う、と書かれています。
今回は Claude Code を起動していないので、どちらのオプションも動きは確かめていません。
未知の動作名を書いたときは、その割り当てが無視されて既定のままになります。
これは v2.1.246以降の説明です。
Windowsでの各ターミナルごとの違いは、今回確認できていません。
よくある質問:Claude Codeのキー操作の設定
keybindings.json は、どうやって作りますか?
Claude Codeで/keybindingsを実行すると、設定ファイル~/.claude/keybindings.jsonを新規作成または開きます。~はユーザーのホームで、作業フォルダー直下の.claudeではありません。既存のbindingsがある場合は内容を残して追加・変更します。
変更は、再起動しなくても自動で反映されます。
特定のキーの割り当てを解除するには?
解除したいキーの値を null にします。
bindings の配列にコンテキストごとのブロックを並べ、ブロックの中では、キーを左に、動作を右に書きます。
コンテキストとは何ですか?
キーを割り当てる、画面の状態のことです。
Global(どこでも有効)、Chat(入力欄)、Autocomplete(補完の候補)、Settings(設定画面)、Confirmation(確認の画面)、Transcript(会話の記録)、HistorySearch(履歴の検索)などがあります。
ほかにも Tabs、Help、Task、ThemePicker、Select、Plugin、Agents、Scroll などがあり、全一覧は公式ページにあります。
キーの書き方のルールは?
修飾キーは + でつなぎます(ctrl、shift、alt、opt、option、meta、cmd、command、super、win)。
キー名の大文字と小文字は区別されません。Shift+Kを指定する場合はshift+kと書きます。
連続するキー(コード)は、スペースで区切り、それぞれ3秒以内に押します。
cmd系のキーは、Kittyプロトコルなど、Superキーを報告するターミナルでだけ有効なので、広く使うなら、ctrlかmetaが無難です。
割り当て直せないキーはありますか?
Ctrl+C、Ctrl+D、Ctrl+M、Ctrl+[、Ctrl+I、Ctrl+H、Caps Lock は割り当て直せません。
また、Ctrl+B(tmux)、Ctrl+A(screen)、Ctrl+Z(Unix系でSIGTSTPによる一時停止)は、ターミナル側と衝突します。
Vimモードのキーも、keybindings.json で変えられますか?
変えられません。
jj を Escape にするような割り当ては、vimInsertModeRemaps の設定で行います。
設定したのに動かないときは?
設定の解析エラーや未知の動作名などはデバッグログで確認できます。修飾キーの誤記にも注意してください。たとえばctl+kは不明な部分が落ちてkに割り当てられ、ctrl+ kのような空白は別の連続キーとして解釈されます。
claude --debug で起動して確かめます。
未知の動作名を書いたときは、その割り当てが無視されて既定のままになります(v2.1.246以降の説明です)。
動作の名前には、バージョンの制限がありますか?
表の画像貼付けはWindowsではAlt+V、WSLではCtrl+VとAlt+Vの両方が既定で割り当てられます。Shift+Tabは古いWindowsランタイムでVTモードがない場合にMeta+Mとなる例外があります。動作名や既定キーはバージョン・端末によって異なります。
たとえば chat:queueSubmit は v2.1.247以降、chat:sendNow は v2.1.275以降と公式に書かれています。
Windowsでの各ターミナルごとの違いは、記事では確認できていません。
参照:公式キーバインド設定ガイド。2026年10月23日は資料照合のみで、実際の設定読込み・キー入力、端末ごとの差、Vimモードやセーフモードの動作・画面は再確認していません。既存画像は2026年10月18日のJSON確認とヘルプ表示の記録です。
