Keybindings(キーバインド)
Keybindings は、Claude Code のキーボードショートカットをカスタマイズする仕組みです。自分の好みに合わせてキー配置を変更し、操作効率を向上させられます。
Keybindings とは
身近な例えで理解する
デフォルト設定
WASD で移動、スペースでジャンプ。多くの人に合うけど、自分の好みとは違うかもしれない。
カスタマイズ後
自分がやりやすいキー配置に変更。操作が速くなり、ストレスが減る。
なぜ Keybindings を設定するのか
1. 操作スピードが上がる
よく使う操作を押しやすいキーに割り当てれば、マウスやメニューを使わずに素早く操作できます。
2. 他のエディタと統一できる
普段 VS Code や Vim を使っている人は、同じキーバインドに揃えることで混乱を防げます。
3. 誤操作を防げる
押し間違えやすいキーの割り当てを解除(null)して、意図しない操作を防ぐこともできます。
設定方法
設定ファイル
~/.claude/keybindings.json に記述します。
# セッション内で設定ファイルを開く
/keybindings
keybindings.json の書き方
基本構造
{
"bindings": [
{
"context": "コンテキスト名",
"bindings": {
"キーストローク": "アクション名",
"キーストローク": "アクション名"
}
}
]
}
キーストロークの書き方
| 記法 | 意味 | 例 |
|---|---|---|
ctrl+k |
Control + K | "ctrl+k": "chat:submit" |
shift+tab |
Shift + Tab | "shift+tab": "chat:cancel" |
meta+p |
Command/Meta + P | "meta+p": "app:exit" |
ctrl+shift+c |
複数修飾キー | 2つ以上の修飾キーを組み合わせ |
ctrl+k ctrl+s |
コード(2段打ち) | 1つ目を押してから2つ目を押す |
null |
割り当て解除 | 既存のショートカットを無効化 |
コンテキスト
キーバインドは画面(コンテキスト)ごとに設定できます。同じキーでもコンテキストによって異なるアクションを割り当てられます。
| コンテキスト | 適用される場面 |
|---|---|
Global |
すべての画面 |
Chat |
メイン入力エリア |
Autocomplete |
自動補完メニュー |
Confirmation |
権限ダイアログ |
Transcript |
トランスクリプトビューア |
Tabs |
タブ操作 |
Help |
ヘルプ画面 |
Settings |
設定画面 |
主なアクション
| アクション | 説明 |
|---|---|
chat:submit |
メッセージを送信 |
chat:cancel |
入力をキャンセル |
chat:externalEditor |
外部エディタで開く |
chat:undo |
元に戻す |
app:toggleTodos |
タスクリスト表示 |
app:toggleTranscript |
トランスクリプト表示 |
app:exit |
Claude Code を終了 |
confirmation:accept |
権限ダイアログで許可 |
confirmation:deny |
権限ダイアログで拒否 |
デフォルトのキーバインド一覧
Claude Code のデフォルトキーバインドは以下の通りです。
| キー | コンテキスト | アクション |
|---|---|---|
Enter |
Chat | メッセージ送信 |
Escape |
Chat | 入力キャンセル |
Ctrl+C |
Global | 実行中の処理を中断 |
Ctrl+O |
Global | Verbose モード切替 |
Shift+Down |
Global | チームメイト切り替え(Agent Teams) |
カスタマイズ例
例1: メイン入力エリアのカスタマイズ
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+j": "chat:submit",
"ctrl+e": "chat:externalEditor",
"ctrl+z": "chat:undo",
"escape": "chat:cancel",
"ctrl+u": null
}
}
]
}
この設定では:
Ctrl+Jでメッセージ送信(デフォルトの Enter の代わりに)Ctrl+Eで外部エディタを起動Ctrl+Zで元に戻すEscapeでキャンセルCtrl+Uを無効化(誤操作防止)
例2: グローバルキーバインドの設定
{
"bindings": [
{
"context": "Global",
"bindings": {
"ctrl+t": "app:toggleTodos",
"ctrl+l": "app:toggleTranscript"
}
}
]
}
この設定では:
Ctrl+Tでタスクリストの表示/非表示を切り替えCtrl+Lでトランスクリプトの表示/非表示を切り替え
例3: 権限ダイアログのキーバインド
{
"bindings": [
{
"context": "Confirmation",
"bindings": {
"enter": "confirmation:accept",
"escape": "confirmation:deny"
}
}
]
}
例4: 複数コンテキストをまとめて設定
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+j": "chat:submit",
"ctrl+e": "chat:externalEditor",
"ctrl+z": "chat:undo",
"escape": "chat:cancel",
"ctrl+u": null
}
},
{
"context": "Global",
"bindings": {
"ctrl+t": "app:toggleTodos",
"ctrl+l": "app:toggleTranscript"
}
},
{
"context": "Confirmation",
"bindings": {
"enter": "confirmation:accept",
"escape": "confirmation:deny"
}
}
]
}
コード(Chord)バインド
コードバインドは、2つのキーストロークを連続して押すことでアクションを実行する仕組みです。VS Code の Ctrl+K Ctrl+S と同じ考え方です。
書き方
2つのキーストロークをスペースで区切って記述します。
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+k ctrl+s": "chat:submit",
"ctrl+k ctrl+e": "chat:externalEditor"
}
}
]
}
動作の流れ
Ctrl+Kを押す(1段目:リーダーキー)- 一定時間内に
Ctrl+Sを押す(2段目:アクションキー) - 割り当てられたアクションが実行される
コードバインドのメリット: 単一キーのショートカットでは足りない場合や、論理的なグループ化をしたい場合に有効です。例えば Ctrl+K をプレフィックスとして、Ctrl+K Ctrl+S で送信、Ctrl+K Ctrl+E でエディタ、のようにグループ化できます。
次のキー入力を待機 U->>S: Ctrl+S を押下 S->>S: Chord バインド判定 S->>U: アクション実行(例: 保存) Note over U,S: 一定時間キー入力がなければ
Chord はキャンセル
割り当て解除(null)
既存のキーバインドを無効化するには、アクションに null を指定します。
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+u": null,
"ctrl+w": null
}
}
]
}
これにより、Ctrl+U と Ctrl+W を押しても何も起きなくなります。ターミナルで行削除やウィンドウ閉じるなどの誤操作を防ぐのに有効です。
ベストプラクティス:
- まずデフォルトで使ってみる - 不便を感じたところだけカスタマイズしましょう
- 他のツールと統一する - VS Code や Vim で使い慣れたキーバインドに合わせると混乱が減ります
- 誤操作しやすいキーは
nullで無効化 -Ctrl+U(行削除)やCtrl+W(ウィンドウ閉じ)など - コードバインドでグループ化 - 関連する操作を同じプレフィックスキーでまとめると覚えやすくなります
- コンテキストを活用する - 同じキーでもコンテキストによって異なるアクションを割り当てられます
- 設定はバックアップを取る -
~/.claude/keybindings.jsonを dotfiles リポジトリで管理すると、環境移行が楽になります