Claude Codeのキー操作を自分の手癖に合わせて並べ替えたい人向け
標準のキー配置が自分の手癖と合わなくて毎日小さく事故るとき。たとえば Ctrl+L を <code>/clear</code> 用に上書きしたい、ターミナルの XOFF を取り戻したいから Ctrl+S を解除したい、vim 風の2打鍵セットを1キーに畳みたい、みたいな場面で <code>/keybindings</code> を叩いて設定ファイルを開き、<code>~/.claude/keybindings.json</code> に書き足してそのまま使う。
Claude Code のキーボード操作は、毎日叩いているうちに「自分の手癖と合わない並び」がだんだん見えてきます。Ctrl+L を押したつもりが画面の再描画しかしてくれなかった、Ctrl+S で送ったはずのメッセージが止まったまま消えた、みたいな小さな事故が地味にストレスを蓄積させます。
このページで扱う Keybinding Customization は、その手癖と Claude Code 側の初期割り当てを ~/.claude/keybindings.json という設定ファイルで上書きするための仕組みです。1個ずつ置き換えられるし、まるごと無効化もできます。
噛み砕くと、自分用に並べ直せる「キー配置の上書きノート」
イメージは新しい職場の引き出しの並び。最初は前任者が決めた配置のまま使うけど、毎日ペンを取る位置が違って手が痛くなったら、自分の手の動きに合わせて並べ直す。あれと同じことを Claude Code のキー操作でやります。
ノートに「このキーを押したらこの動作にする」と1行書く。Claude Code がそれを読んで、その通りに動いてくれる。気が変わったら書き換える。これだけです。
大事な前提:v2.1.18 以上じゃないとそもそもこの仕組みが動かない
公式ドキュメントは Customizable keyboard shortcuts require Claude Code v2.1.18 or later と書いています。古い版だとファイルを置いても無視されて、なんで効かないんだろうと半日溶かす羽目になります。
確認は次の1行で済みます。
$ claude --version
2.1.18 より新しければそのまま進めて大丈夫です。古ければ Claude Code を一度アップデートしてから戻ってきてください。
「料理ブログのプロジェクトで Ctrl+L 事故を直す」を例に、実際の手順を見る
料理レシピをまとめるサイトを Claude Code で毎日触っているとして、画面が散らかったときに反射で押す Ctrl+L が /clear じゃなくて画面の再描画だと知らずに事故るパターンを直してみます。
ステップ1: /keybindings で設定ファイルを開く
Claude Code の入力欄にそのまま打ちます。
/keybindings
初回は ~/.claude/keybindings.json が無いので、Claude Code 側が雛形を作って開いてくれます。2回目以降は同じファイルがそのまま開きます。
ステップ2: 雛形を眺める
開いた直後はこんな並びになっています。
{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": []
}
bindings の中に「どの場面で、どのキーを、どう動かすか」を書き足していきます。
ステップ3: Ctrl+L に chat:clearScreen を割り当てる
Ctrl+L は標準だと chat:clearInput(画面の再描画)に割り当たっているので、これを画面クリア側に書き換えます。
{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+l": "chat:clearScreen"
}
}
]
}
ここで初心者がやりがちな勘違いがあります。chat:clearScreen も「2秒以内に2回押すと /clear が走る」挙動なので、1回押しただけでは会話履歴は消えません。即時で /clear を呼びたいなら、入力欄でそのまま /clear と打ったほうが早いです。
ステップ4: 保存する
ファイルを保存します。再起動はしなくていいです。公式が Changes to the keybindings file are automatically detected and applied without restarting Claude Code と明記しているので、保存した瞬間から新しい配置で動きます。
ステップ5: /doctor で問題が出ていないか確認
JSON の書式が壊れていたり、押せないキーを書いていたり、同じキーを2回別の動作に割り当てていると、Claude Code が警告を出します。
/doctor
このコマンドが「キー配置に問題なし」と言ってくれれば、安心して使い始めてOKです。警告が出ていれば、その行を直してもう一度保存します。
ステップ6: 効かないキーは元に戻す
1日試して手に馴染まなかったら、その行を消すか null に書き換えるだけで戻せます。"ctrl+l": null と書けば、Claude Code 側のもとの動作に戻ります。
つまり Keybinding Customization は何をしてくれるのか
- やってくれる: 標準のキー配置を1個ずつ別の動作に置き換える、特定のキーを無効化する、Ctrl+X から始まる2打鍵セットの組み立てを変える
- やってくれない:
Ctrl+CCtrl+DCtrl+MCaps Lockなど Claude Code 側で固定されているキーの上書き、ターミナル本体の挙動の上書き - 意味が薄い場面: 最初の1週間で使い方を覚えている最中、標準配置にまだ慣れていない段階で先に並べ替えると「どっちの配置だっけ」が増えるだけです
使いどころ3シナリオ(具体題材で再現)
シナリオ1: 料理ブログを Claude Code で書いていて Ctrl+L が /clear だと思い込んでいるとき
レシピ記事の下書きが画面に散らばってきて、頭の中で「いったん画面を流す」つもりで Ctrl+L を叩くと、Claude Code は再描画しかしません。chat:clearScreen を Ctrl+L に当て直すと、2連打で会話履歴を流せます。1日5回叩いていれば1か月で150回の「あれっ消えない」が消えます。
シナリオ2: 家計簿アプリを書きながら Ctrl+S が勝手に下書き保存になってイラつくとき
標準だと Ctrl+S は chat:stash(入力中の文を一時退避)に割り当たっています。普段ターミナルで Ctrl+S を XOFF(画面のスクロールを止める)として使っている人は、これを null で外しておくとターミナル側のもとの挙動に戻ります。
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+s": null
}
}
]
}
シナリオ3: 家計簿アプリの設計を書きながら Ctrl+X を改行用に1キーで使いたいとき
Ctrl+X は標準では「2打鍵セットの先頭」になっています。たとえば Ctrl+X Ctrl+K でバックグラウンド処理の停止、Ctrl+X Ctrl+E で外部エディタ起動です。Ctrl+X を単独で改行 (chat:newline) として使いたいなら、同じ先頭を共有している2打鍵セットを全部 null で解除した上で、Ctrl+X を改行に割り当てます。
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+x ctrl+k": null,
"ctrl+x ctrl+e": null,
"ctrl+x": "chat:newline"
}
}
]
}
同じ先頭を共有する2打鍵セットが1つでも残っていると、Ctrl+X を押した瞬間に「次のキー待ち」モードに入ってしまい、単独動作になりません。ここは公式が明示的に注意している箇所です。
初心者が踏みやすい落とし穴
- Ctrl+C / Ctrl+D / Ctrl+M / Caps Lock は何を書いても効かない。公式の Reserved shortcuts 表に「rebind 不可」と明記されている4キーで、これを
~/.claude/keybindings.jsonに書いても/doctorが警告を出して終わります。Ctrl+M はターミナルが Enter と同じ信号として扱う仕様で、見た目は別キーでも区別できません - Reserved shortcuts と Terminal conflicts は別物。Reserved は Claude Code 側のハードコードで書いても効かないキー。一方 Terminal conflicts は
Ctrl+Bが tmux の先頭キー、Ctrl+Aが GNU screen の先頭キー、Ctrl+Zがプロセスを裏に回す合図、というふうに3つあって、こちらは Claude Code 側の割り当て自体は通るけどターミナル本体や常駐ツール側に取られて届きにくい、という別の話 - 2打鍵セットの先頭を解放したいなら同じ先頭を持つやつ全部を
nullにする。1個でも残っているとその先頭は「次のキー待ち」モードに入ったままで、単独動作に振り直せません Globalの場面区分にキーを置きすぎると確認ダイアログが壊れる。場面は20種類あって、Globalはどの画面でも効く全体配置。ここにEnterを別動作で振ると、許可確認ダイアログの「はい」を返すキーまで上書きされて、危ない操作の同意ができなくなったりします。必要最小限の場面に絞るのが安全ですcmdとsuperはほとんどのターミナルで届かない。Kitty 系のキーボードプロトコルや xterm のmodifyOtherKeysモードに対応しているターミナルだけで動く特殊な追加キー。汎用に使いたいならctrlかmetaで書くのが無難です- vim mode を有効にしていると Escape が
chat:cancelに届かない。/configでエディタモードを vim にしている場合、Escape は INSERT モードから NORMAL モードへの切り替えに取られます。Escape で入力中の文をキャンセルする動作を割り当て直しても、vim 側に先取りされて動きません - 同じ場面に同じキーを2回書くと後勝ち&
/doctorが指摘。書き間違いで2か所に同じキーが残ると、Claude Code は怒らずに最後の指定で動かしますが、自分の意図と違う動作になっていることが多いです。保存したら/doctorを1回叩く癖をつけておくと事故が減ります
書き方
/keybindings
# 開いたファイルに以下のような JSON を書く
{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+l": "chat:clearScreen",
"ctrl+s": null
}
}
]
}
やってみるとこうなる
入力
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+x ctrl+k": null,
"ctrl+x ctrl+e": null,
"ctrl+x": "chat:newline"
}
}
]
}
出力例
ファイルを保存した瞬間から新しい配置が反映される(再起動不要)。書式が壊れていたり、上書きできないキーを書いていたり、同じ場面に同じキーを2回書いていると、<code>/doctor</code> を叩いたときに警告が表示される。
このページに出てきた言葉
- ~/.claude/keybindings.json
- 自分のホームディレクトリの <code>.claude</code> フォルダにある、キー配置の上書きを書き留める設定ファイル
- context
- 「どの場面の話か」を指定する区分け。<code>Chat</code>(入力欄)、<code>Confirmation</code>(許可確認画面)など20種類
- action
- 「何の動作か」を表す名前。<code>namespace:action</code> という形式で、たとえば <code>chat:submit</code> はメッセージ送信
- 2打鍵セット (chord)
- Ctrl+X を押して離してから Ctrl+K を押す、のように2回の打鍵を1つの動作に結びつける書き方
- Reserved shortcuts
- Claude Code 側で固定されていて書き換えられない4つのキー(Ctrl+C / Ctrl+D / Ctrl+M / Caps Lock)
- Terminal conflicts
- Claude Code 側の設定は通るが、ターミナル本体や常駐ツールに先取りされやすい3つのキー(Ctrl+B = tmux 先頭、Ctrl+A = GNU screen 先頭、Ctrl+Z = 裏に回す合図)
- null
- JSON で「何もない」を表す書き方。動作を割り当てたくないキーに対して書くと、そのキーは無効になる
- /doctor
- Claude Code の状態を点検してくれる組み込み機能。キー配置の書き間違いをここで拾える