Claude CodeのkeybindingFlavorとは — Ctrl+Wの単語削除が変わった理由
Claude CodeのkeybindingFlavor設定はv2.1.261で非推奨になり、Ctrl+Wは常にreadline方式で単語区切りを削除します。設定ファイルに残っていても動作には影響しません。
Ctrl+Wでパスをひとまとめに消せたのに、別の環境では1単語ずつしか消えない。Claude Codeでこの食い違いに遭遇したら、原因はkeybindingFlavorという設定です。この設定はv2.1.261で非推奨になり、今はどの環境でも同じ方式に統一されています。
長いファイルパスやオプション付きのコマンドを入力していると、消したい範囲が末尾の1階層なのか、パス全体なのかで欲しいキー操作は変わります。同じキーでもバージョンによって消える範囲が違っていた、という食い違いの正体が今回扱う設定です。
Claude CodeのkeybindingFlavorとは
keybindingFlavorは、プロンプト入力欄の単語編集キーの挙動を切り替える設定でした。値は"classic"か"readline"の文字列で、スコープはAny file、既定値は未設定です。Any fileは、ユーザー設定・プロジェクト設定・ローカル設定・管理設定のどこに書いても読み込まれるという意味です。
v2.1.261以降、この設定は非推奨になり効果を持ちません。単語編集キーは常にreadline方式に統一されたためです。設定ファイルにkeybindingFlavorを書いても、Claude Codeはエラーを出さずに読み込みます。値が捨てられるだけで、設定ファイル自体は今も有効です。
keybindingFlavorの3つの節目
- v2.1.238(2026年8月20日)設定が追加される
"readline"を指定すると、Ctrl+Wが直前の空白まで削除するようになりました。指定しない既定の"classic"は、従来どおり直前の単語だけを消します。 - v2.1.239(2026年8月21日)単語キーもBashに寄る
"readline"指定時はAlt+Fが単語の末尾で止まり、Alt+Dがそこまで削除し、句読点が単語の区切りになりました。 - v2.1.261(2026年9月4日)readlineに一本化される
単語編集キーはBashと同じ挙動で固定され、
keybindingFlavorは何も変えなくなりました。
チームで共有しているプロジェクトの.claude/settings.jsonに残っていても、grepで見つけて慌てて削除する必要はありません。~/.claude.jsonはAny fileとは別の「Global config」というスコープで、設定を探すときはsettings.jsonとsettings.local.json(と管理設定)に絞れば足ります。
Ctrl+Wは今どんな単位で文字を消すか
readline方式に統一された結果、Ctrl+Wは句読点を無視して直前の空白まで一気に削除します。src/utils/foo.tsと入力した状態で1回押すと、パス全体が消えます。--flag=valueのような形も1回で消えます。bashのデフォルト挙動と同じ動きです。
消した文字列は保持されるため、Ctrl+Yで貼り戻せます。連続して貼り付け履歴を切り替えたいときはAlt+Yを使います。
この貼り付けバッファーはCtrl+W専用ではありません。行末まで消すCtrl+Kや行頭まで消すCtrl+Uで削除した文字列も同じCtrl+Yで復元できます。想定より広い範囲を消してしまったときは、Ctrl+Yで戻す以外にCtrl+_(またはCtrl+Shift+-)で直前の編集そのものを取り消す方法もあります。
長いコマンドを組み立てる途中で引数の一部だけを直したいとき、一括削除はむしろ邪魔になる場面もあります。そのときは単語単位のキーに持ち替えれば、消える範囲を自分で選べます。
同じ「単語」でも区切りの基準が2種類ある
Ctrl+W
句読点を無視して、直前の空白まで消します。
Alt+B・Alt+F・Alt+D・Option+Delete・Ctrl+Backspace
英数字の連続を1単語とし、_・.・/で区切ります。
以前のkeybindingFlavorが担っていた「単語だけを消す」挙動は、別のキーとして残っています。macOSではOption+Delete、WindowsではCtrl+Backspaceです。設定を書き換える代わりにこちらを使えば、単語単位の削除に切り替えられます。
Alt+B・Alt+F・Alt+DをmacOSで使うには、ターミナル側でOptionキーをMetaとして送る設定が別途必要です。日本語や中国語のようにスペースを使わない文章でも、単語系のキーは1単語ずつ動き、消えます。
Windowsでは、BackspaceがCtrl+Backspaceとして読まれて単語ごと消えることがあります。Claude Codeは^Hとして届いたBackspaceをCtrl+Backspaceとして扱います。例外はTERM_PROGRAMがminttyのときと、TERMがcygwinのときです。
Backspaceを押すたびに単語ごと消えるなら、環境変数CLAUDE_CODE_BS_AS_CTRL_BACKSPACEを0にします。BackspaceとCtrl+Hが1文字ずつ消えるようになります。macOSやLinuxでCtrl+Backspaceが1文字しか消えないときは、同じ変数を1にします。詳しい手順はGit BashのBackspaceが単語ごと消える問題をClaude Codeで直すで扱っています。
キーボードの配列がキリル文字などのときは、Ctrl+Wの届き方がターミナルによって変わります。Kittyキーボードプロトコルでキーの物理位置を報告するターミナルなら、ロシア語配列でもCtrlとWキーの組み合わせがctrl+wになります。位置を報告しないターミナルでは、キーがキリル文字として届き、どのバインドにも一致しません。
Claude Codeの全ショートカット早見表には、行移動や履歴検索など他の操作もまとまっています。
削除系キーは何をどこまで消すか
入力欄の削除キーは、消す範囲と戻し方が少しずつ違います。Ctrl+K・Ctrl+U・Ctrl+W・Alt+Dで消した文字列は、すべてCtrl+Yで貼り戻せます。
| キー | 消す範囲 | 補足 |
|---|---|---|
Ctrl+W | 消す範囲直前の空白まで | 補足 |
Alt+D | 消す範囲現在の単語の末尾まで | 補足カーソルが単語の間にあると、次の単語の末尾まで |
Ctrl+K | 消す範囲行末まで | 補足 |
Ctrl+U | 消す範囲行頭まで | 補足複数行の入力では、繰り返すと行をまたいで消える |
Option+Delete(macOS)/Ctrl+Backspace(Windows) | 消す範囲直前の単語 | 補足 |
macOSのCmd+Backspaceは、iTerm2やTerminal.appなどのターミナルがCtrl+Uに割り当てているため、行頭まで消えます。Alt+Fも同じ形で、現在の単語の末尾か、カーソルが単語の間にあるときは次の単語の末尾へ進みます。
Vimのword(単語)とWORD(空白区切り)と同じ構図
Claude CodeのVimモードには、これと同じ区別がもともとあります。文字種で区切る「word」と、空白だけで区切る「WORD」です。テキストオブジェクトのiw/aw(単語の内側/周囲)とiW/aW(空白区切りの内側/周囲)がその区別にあたります。dw・de・dbは前者の基準で単語単位を扱う操作です。
たとえばsrc/utils/foo.tsのfoo部分にカーソルがある状態で、diwはfooだけを削除し、diWはパス全体を削除します。Alt系のキーがword、Ctrl+WがWORDに相当すると考えると。
Vimのモーションキー自体はNORMALモード専用です。~/.claude/keybindings.jsonの他のアクションはClaude Codeの全体設定リファレンスにまとめています。Vim NORMALモードの操作一覧はClaude Code Vimモードの使い方とキー操作一覧を参照してください。
Ctrl+Wだけではない、readline由来のキーは他にもある
プロンプト入力を編集するCtrl+GにはCtrl+X Ctrl+Eという別の押し方があります。公式ドキュメントはこちらを「readline-nativeな割り当て」と明記しています。どちらもデフォルトのテキストエディターでプロンプトを開く操作で、readlineに慣れた手が自然に伸びるのはCtrl+X Ctrl+Eです。
コマンド履歴を遡るCtrl+Rも、readlineの逆方向インクリメンタルサーチと同じ発想の機能です。履歴検索の細かい挙動やフルスクリーン表示・Vimモードでの違いはCtrl+R履歴検索でClaude Codeの過去プロンプトを再利用するで扱っています。
keybindingFlavorを書いた設定ファイルの扱い
過去に次のような設定を書いていた場合、v2.1.261以降は値が読み込まれるだけで動作には反映されません。
{
"keybindingFlavor": "readline"
}この設定は効果を持たないため、消すか残すかは設定ファイルを整理するときに決めれば足ります。
利用形態別keybindingFlavor廃止の影響早見表
| 利用形態 | v2.1.261以降の挙動 | 対処 |
|---|---|---|
"readline"を明示設定していた | v2.1.261以降の挙動変化なし。既に望んでいた挙動が既定になっている | 対処設定は削除してよいが残してもよい |
"classic"を明示設定していた | v2.1.261以降の挙動無視され、Ctrl+Wは空白区切りに、Alt+F・Alt+DはBashと同じ単語末尾基準になる | 対処単語だけ消したいならOption+Delete(macOS)かCtrl+Backspace(Windows)を使う |
| 未設定のままv2.1.260以前を使っている | v2.1.261以降の挙動Ctrl+Wは単語のみ削除する旧挙動のまま | 対処v2.1.261へ更新するとCtrl+Wの消える範囲が空白区切りに広がる |
| bash・zshの操作感に慣れている | v2.1.261以降の挙動追加設定なしで同じ挙動になる | 対処特に対応不要 |
分かれ目はv2.1.261をまたいだかどうかです。何も書いていなかった利用者も、更新するとCtrl+Wの消える範囲が広がります。社内のドキュメントや個人のメモに「readlineに設定すると使いやすくなる」という古い手順が残っている場合は、その手順がもう不要になっている点だけ押さえておけば足ります。
自分の環境で挙動を試す
手元のバージョンを確かめてから、入力欄で実際に2つのキーを比べると違いが一目で分かります。版はclaude --versionで確かめます。
Ctrl+WとAlt+Bを見比べる手順
- 1
バージョンを確かめる
v2.1.261以降なら、
keybindingFlavorの設定にかかわらず挙動は同じです。 - 2
区切り文字入りの文字列を打つ
入力欄に
src/utils/foo.tsと打ちます。 - 3
Ctrl+Wを1回押す
文字列全体が消えれば、readline方式で動いています。
- 4
Ctrl+Yで戻し、Alt+Bを繰り返す
Ctrl+Yで貼り戻したあとAlt+Bを押し続けると、ts・foo・utils・srcの順にカーソルが止まります。
claude --versionまとめ
keybindingFlavorはv2.1.238からv2.1.260までの間だけ意味を持った設定で、今は書いても書かなくても同じです。単語だけを消したい場面では、設定を探すよりOption+DeleteかCtrl+Backspaceに持ち替えるのが近道です。"classic"の挙動に慣れた手は、設定ではなくキーで合わせ直します。