Keybindings(キーバインド)

Keybindings は、Claude Code のキーボードショートカットをカスタマイズする仕組みです。自分の好みに合わせてキー配置を変更し、操作効率を向上させられます。

Keybindings とは

身近な例えで理解する

デフォルト設定

WASD で移動、スペースでジャンプ。多くの人に合うけど、自分の好みとは違うかもしれない。

カスタマイズ後

自分がやりやすいキー配置に変更。操作が速くなり、ストレスが減る。

なぜ Keybindings を設定するのか

1. 操作スピードが上がる

よく使う操作を押しやすいキーに割り当てれば、マウスやメニューを使わずに素早く操作できます。

2. 他のエディタと統一できる

普段 VS Code や Vim を使っている人は、同じキーバインドに揃えることで混乱を防げます。

3. 誤操作を防げる

押し間違えやすいキーの割り当てを解除(null)して、意図しない操作を防ぐこともできます。

設定方法

設定ファイル

~/.claude/keybindings.json に記述します。

# セッション内で設定ファイルを開く
/keybindings

keybindings.json の書き方

基本構造

~/.claude/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: メイン入力エリアのカスタマイズ

~/.claude/keybindings.json
{
  "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: グローバルキーバインドの設定

~/.claude/keybindings.json
{
  "bindings": [
    {
      "context": "Global",
      "bindings": {
        "ctrl+t": "app:toggleTodos",
        "ctrl+l": "app:toggleTranscript"
      }
    }
  ]
}

この設定では:

  • Ctrl+T でタスクリストの表示/非表示を切り替え
  • Ctrl+L でトランスクリプトの表示/非表示を切り替え

例3: 権限ダイアログのキーバインド

~/.claude/keybindings.json
{
  "bindings": [
    {
      "context": "Confirmation",
      "bindings": {
        "enter": "confirmation:accept",
        "escape": "confirmation:deny"
      }
    }
  ]
}

例4: 複数コンテキストをまとめて設定

~/.claude/keybindings.json(完全な設定例)
{
  "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"
      }
    }
  ]
}

動作の流れ

  1. Ctrl+K を押す(1段目:リーダーキー)
  2. 一定時間内に Ctrl+S を押す(2段目:アクションキー)
  3. 割り当てられたアクションが実行される

コードバインドのメリット: 単一キーのショートカットでは足りない場合や、論理的なグループ化をしたい場合に有効です。例えば Ctrl+K をプレフィックスとして、Ctrl+K Ctrl+S で送信、Ctrl+K Ctrl+E でエディタ、のようにグループ化できます。

sequenceDiagram participant U as ユーザー participant S as システム U->>S: Ctrl+K を押下 Note over S: リーダーキー受付
次のキー入力を待機 U->>S: Ctrl+S を押下 S->>S: Chord バインド判定 S->>U: アクション実行(例: 保存) Note over U,S: 一定時間キー入力がなければ
Chord はキャンセル
コード(Chord)バインドの入力シーケンス

割り当て解除(null)

既存のキーバインドを無効化するには、アクションに null を指定します。

{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+u": null,
        "ctrl+w": null
      }
    }
  ]
}

これにより、Ctrl+UCtrl+W を押しても何も起きなくなります。ターミナルで行削除やウィンドウ閉じるなどの誤操作を防ぐのに有効です。

ベストプラクティス:

  • まずデフォルトで使ってみる - 不便を感じたところだけカスタマイズしましょう
  • 他のツールと統一する - VS Code や Vim で使い慣れたキーバインドに合わせると混乱が減ります
  • 誤操作しやすいキーは null で無効化 - Ctrl+U(行削除)や Ctrl+W(ウィンドウ閉じ)など
  • コードバインドでグループ化 - 関連する操作を同じプレフィックスキーでまとめると覚えやすくなります
  • コンテキストを活用する - 同じキーでもコンテキストによって異なるアクションを割り当てられます
  • 設定はバックアップを取る - ~/.claude/keybindings.json を dotfiles リポジトリで管理すると、環境移行が楽になります