Keybinding Customization(キーバインディング・カスタマイゼーション)

キーバインド
Keybinding Customization
キーバインディング・カスタマイゼーション
Claude Code v2.1.18 以上で使える、キー配置の上書き機能。<code>~/.claude/keybindings.json</code> という設定ファイルに「どの場面で、どのキーを押したら、どの動作にするか」を JSON で書いていく仕組み。1個ずつ差し替えても、まるごと無効化してもいい。

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+C Ctrl+D Ctrl+M Caps 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 を別動作で振ると、許可確認ダイアログの「はい」を返すキーまで上書きされて、危ない操作の同意ができなくなったりします。必要最小限の場面に絞るのが安全です
  • cmdsuper はほとんどのターミナルで届かない。Kitty 系のキーボードプロトコルや xterm の modifyOtherKeys モードに対応しているターミナルだけで動く特殊な追加キー。汎用に使いたいなら ctrlmeta で書くのが無難です
  • 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 の状態を点検してくれる組み込み機能。キー配置の書き間違いをここで拾える

関連項目

公式ドキュメント

https://code.claude.com/docs/en/keybindings

-

← 戻る