Claude Codeのキー操作は、keybindings.json で変えられます。
公式ドキュメントから、設定ファイルの作り方と書き方を整理しました。
- /keybindings で ~/.claude/keybindings.json を作って開く
- 変更は、再起動しなくても自動で反映される
- 解除したいキーは、値を null にする
- Ctrl+Cなど一部のキーは割り当て直せない
キー操作の実機での再現は含まず、公式ページの記載(2026年9月30日に確認)に基づきます。
仕様や数値は変わることがあるので、最新は公式ページで確かめてください。
設定ファイルの作り方
Claude Codeで /keybindings を実行すると、~/.claude/keybindings.json が作られて開きます。
公式の例は、次の形です。
{
"$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 にすると、そのキーの割り当てを解除できます。
コンテキスト
キーは、画面の状態(コンテキスト)ごとに割り当てます。
- 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とWSLは Alt+V) |
動作の名前には、バージョンで追加されたものがあります。
たとえば chat:queueSubmit は v2.1.247以降、chat:sendNow は v2.1.275以降と公式に書かれています。
キーの書き方
- 修飾キーは + でつなぐ(ctrl、shift、alt、opt、option、meta、cmd、command、super、win)
- 大文字と小文字は区別されない
- 連続するキー(コード)は、スペースで区切る。例は 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:SIGTSTP(一時停止)になる
Vimモードのキー
Vimモードのキーは、keybindings.json では変えられません。
jjでEscapeにするような割り当ては、vimInsertModeRemaps の設定で行います。
うまく動かないとき
不正な設定があると、警告がデバッグログに出ます。
claude –debug で起動して確かめます。
未知の動作名を書いたときは、その割り当てが無視されて既定のままになります。
これは v2.1.246以降の説明です。
Windowsでの各ターミナルごとの違いは、今回確認できていません。
よくある質問:Claude Codeのキー操作の設定
keybindings.json は、どうやって作りますか?
Claude Codeで /keybindings を実行すると、~/.claude/keybindings.json が作られて開きます。変更は、再起動しなくても自動で反映されます。
特定のキーの割り当てを解除するには?
解除したいキーの値を 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)。大文字と小文字は区別されません。連続するキー(コード)は、スペースで区切り、それぞれ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(SIGTSTP=一時停止になる)は、ターミナル側と衝突します。
Vimモードのキーも、keybindings.json で変えられますか?
変えられません。jj を Escape にするような割り当ては、vimInsertModeRemaps の設定で行います。
設定したのに動かないときは?
不正な設定があると、警告がデバッグログに出ます。claude –debug で起動して確かめます。未知の動作名を書いたときは、その割り当てが無視されて既定のままになります(v2.1.246以降の説明です)。
動作の名前には、バージョンの制限がありますか?
動作の名前には、バージョンで追加されたものがあります。たとえば chat:queueSubmit は v2.1.247以降、chat:sendNow は v2.1.275以降と公式に書かれています。Windowsでの各ターミナルごとの違いは、記事では確認できていません。仕様や数値は変わることがあるので、最新は公式ページで確認してください。
