Claude Code のキーバインド:キー変更・Vim モード・ショートカット総まとめ
Claude Code でキー操作を変える方法をすべて解説:keybindings.json の編集、/vim や /config による Vim モードの有効化、そして覚えておく価値のあるデフォルトのキーボードショートカットまで。
要点だけ
- キーバインドは ~/.claude/keybindings.json にあります。/keybindings で作成・オープンでき、保存した瞬間に反映されます。再起動は不要です。
- バインディングはコンテキスト単位でグループ化され(Chat・Autocomplete・Agents・Scroll など)、"ctrl+e" のようなキーを chat:externalEditor のようなアクションに割り当てます。null を代入すれば解除です。
- Vim モード:/vim を実行、または /config → Editor mode → Space → Enter。Escape で INSERT/NORMAL を切り替え、v2.1.118 からはビジュアルモード(v/V)も使えます。
- 触れないキーもあります:Ctrl+C・Ctrl+D・Ctrl+M は再割り当て不可。さらに tmux の Ctrl+B プレフィックスは、Claude Code に届く前にショートカットを吸い取ります。
How to Enable Vim Editor in Claude Code CLI
チャンネル:ProgrammingKnowledge21:32
Claude Code v2.1.118 — Vim Visual Mode & Custom Themes
チャンネル:Claude Code Updates0:41
How to use Vim in Claude Code
チャンネル:HAMY LABS5:41
Claude Code release notes — v2.1.118 & v2.1.288
リリースノート:github.com/anthropics/claude-code
Keybindings — official documentation
公式ドキュメント:code.claude.com/docs
本ページの事実は公式の keybindings ドキュメントと v2.1.118・v2.1.288 の changelog と突き合わせて確認しています。スクリーンショットは上記動画からのフレームです。記載の動作は Claude Code v2.1.288(2026年10月)時点のもの。
スクリーンショットは紹介動画のフレームを使用し、出典を明記のうえ、各ステップに元動画のタイムスタンプへのリンクを付けています。
キー変更と Vim モード有効化の手順
keybindings.json でキーを変える
- 1
Claude Code を起動して環境を確認
ターミナルで claude を実行してセッションを開始します。キーバインドのカスタマイズも Vim モードも CLI の機能なので、このページの操作はすべて同じプロンプト内で完結します。v2.1.288 以降なら agents ビューの新ショートカット(Ctrl+F の検索、Alt+↑/↓ のグループ間ジャンプ)も使えます。

カスタマイズ前のまっさらな Claude Code セッション。動画 0:17 で見る - 2
/keybindings で keybindings.json を開く
プロンプトで /keybindings と入力します。~/.claude/keybindings.json が存在しなければ Claude Code が作成し、エディタで開いてくれます。保存した変更は自動で検知されるので、再起動は不要です。

スラッシュメニューは入力に合わせて絞り込まれます。/keybindings もその一つ。動画 0:34 で見る - 3
コンテキスト内でキーをアクションに割り当てる
ファイルの中身は、コンテキスト(Chat・Autocomplete・Agents・Task・Scroll など)ごとにまとまった bindings 配列です。各ブロックはキーとアクション名を対応させます:undefined }。先頭に $schema フィールドを付ければ、エディタがアクション名を自動補完してくれます。
- 4
null で解除、チェーン(chord)で連続入力
キーに null を設定すればデフォルトを無効化できます。"ctrl+s": null とすれば入力の stash がオフに。chord はスペース区切りで、"ctrl+x ctrl+k" は Ctrl+X を押して 3 秒以内に Ctrl+K を押す意味です。Ctrl+C・Ctrl+D・Ctrl+M・Ctrl+[・Ctrl+I の組み合わせは予約済みで、再割り当てできません。
Vim モードを有効にする
- 5
/config で設定パネルを開く
JSON を手で編集するよりトグルがいい、という方は /config を。動画で映っている設定パネルが開き、Status・Config・Usage のタブと、入力に合わせて絞り込む検索ボックスが使えます。

/config パネルには Editor mode を含む全設定が並びます。動画 0:40 で見る - 6
検索で Editor mode に絞り込む
検索ボックスに edit と入力すると、リストは Editor mode の設定一行に絞り込まれます。初期値は normal。bash や Emacs のキーバインドに慣れた人にはおなじみの、readline 風の編集です。

Editor mode の初期値は normal。Space で切り替えます。動画 1:08 で見る - 7
Space で vim に切り替える
Editor mode の行を選んだ状態で Space を押すと、値が normal から vim に切り替わります。下部のヒント行が操作を明示してくれます:Space で変更、Enter で保存、/ で検索、Esc でキャンセル。

vim への切り替えは Space 一押しです。動画 1:11 で見る - 8
保存したら -- INSERT -- を確認
Enter で保存すると、Claude Code は "Set editor mode to vim" と表示し、フッターに vim の -- INSERT -- マーカーが現れます。この設定は同じマシン上でセッションをまたいで保持されます。実体は ~/.claude.json の editorMode。このファイルは OAuth キャッシュやセッション状態も抱えるランタイムファイルなので、dotfiles に symlink するのはやめましょう。

保存完了。フッターに vim の -- INSERT -- 表示が現れます。動画 1:28 で見る - 9
insert で入力、normal で操作
insert モードは普通のタイピングです。Escape で normal モードに切り替わり、h・j・k・l でカーソル移動、b・w で単語間移動、d で削除、c で変更、r で置換します。もう一度 /vim を実行すれば Vim モード自体をオフに。vim 固有のキーは keybindings.json からは再割り当てできません。INSERT 中の jj のようなシーケンスは vimInsertModeRemaps で設定します。
- 10
ビジュアルモードでテキストを選ぶ(v2.1.118+)
「ビジュアルモードは使えない」と書いた古いチュートリアルがありますが、もう古い情報です。v2.1.118 でビジュアルモード(v)と visual-line モード(V)が追加され、選択・オペレータ・視覚的フィードバックが動きます。v+モーションで文字単位、V+モーションで行単位に選び、d・y・c で処理しましょう。

v2.1.118 で Claude Code の Vim モードに v・V の選択が加わりました。動画 0:16 で見る
覚えておきたいデフォルトのショートカット
- 11
重要なデフォルトのショートカットを覚える
Shift+Tab は権限モードの切替、Enter は送信、Ctrl+J は改行、Ctrl+L は入力クリア、Ctrl+R は履歴検索、Ctrl+O はトランスクリプト表示、Ctrl+T は todo 表示、Ctrl+B はタスクのバックグラウンド化、Ctrl+X Ctrl+K は agents の強制終了。v2.1.288 以降の agents ビューでは Ctrl+F でセッション名検索、Alt+↑/↓ でグループ間ジャンプ。これらはすべて keybindings.json で再割り当て可能です。
keybindings.json vs /config vs /vim:それぞれ何が変わるか
Claude Code のキー操作は三つのレイヤーで決まります。競合ではなく積み重ねの関係なので、変えたい内容に合う層を選びましょう。
- 1keybindings.json は個別のアクションを再割り当てします。chat:externalEditor を ctrl+e に移す、chat:stash を解除する、ctrl+x の chord を追加する。きめ細かく、ポータブルで、バージョン管理にも安心して入れられます。
- 2/config → Editor mode は編集モデル全体を normal(readline)と vim で切り替えます。ワンタッチで即保存され、そのマシンの今後のすべてのセッションに適用されます。
- 3/vim は Editor mode のトグルと完全に同じ働きです。一番速い経路であり、HAMY LABS の解説動画でも使われているコマンドです。もう一度実行すれば normal に戻ります。
- 4ターミナルが Claude Code より先にキーを横取りすることがあります:tmux の Ctrl+B プレフィックス、GNU screen の Ctrl+A、プロセスを停止する Ctrl+Z など。これは keybindings.json ではなくターミナル側で対処します。
- 5Vim モード内では vimInsertModeRemaps だけが jj → escape のような vim 動作を再割り当てする手段です。keybindings.json は vim の内部キーに意図的に触れません。
目安:嫌なショートカットが一つ → keybindings.json。編集体験ごと変えたい → Vim モード。キーが届かない → まずターミナルを疑う。
キーバインドが効かない?順番に潰す
キーバインドのトラブルは大抵、次の五つの原因に帰着します。ファイルをいじり直す前に、上から順に確認しましょう。
- 1編集しても何も変わらない:ファイルが ~/.claude/keybindings.json であること(settings.json ではない)と、JSON がパースできることを確認します。--debug 付きで起動すれば、アクション名の打ち間違いや未知のコンテキストなどバインディングの警告が表示されます。
- 2あるキーだけ再割り当てを拒む:Ctrl+C・Ctrl+D・Ctrl+M(常に Enter)・Ctrl+[(常に Escape)・Ctrl+I(常に Tab)は予約済みです。テキストフィールドで打った印字可能な文字はバインディングではなく入力へ流れます。
- 3Ctrl+B や Ctrl+A が届かない:tmux と GNU screen がプレフィックスとして消費しています。keybindings.json で別キーに割り当てるか、マルチプレクサ側のプレフィックスを変えましょう。
- 4chord のプレフィックス再利用に失敗する:ctrl+x で始まる chord が複数ある間は、すべて解除しないと ctrl+x 単独を普通のキーとして使えません。
- 5vim のキーがバインディングを無視する:仕様です。vim モードのキーは vim 自ら管理します。insert 中のシーケンスは vimInsertModeRemaps を使い、v や V の選択が効かないなら Claude Code を v2.1.118 以降へ更新しましょう。
デフォルトに戻したいときは、keybindings.json からその行を削除します。「既定値を書き戻す」のではなく「削除する」ことで元のバインディングが復活します。
