2026年9月4日 金曜日
AI時短ラボ
検証· 約12

Claude CodeにBash風のCtrl+Wを──keybindingFlavor: readline設定の中身

anthropics/claude-codeのv2.1.238(2026年8月20日リリース)で、プロンプト入力のキー操作をBash(readline)に寄せる新設定keybindingFlavorが追加されました。「readline」に設定するとCtrl+Wが直前の空白まで削除するようになり、v2.1.239ではAlt+F・Ctrl/Option+→・Alt+D・Ctrl+Yといった単語単位の操作もBash互換になっています。デフォルトの「classic」との違いをGitHub公式リリースノートで確認しました。

Claude CodeにBash風のCtrl+Wを──keybindingFlavor: readline設定の中身
執筆・編集:
目次

2026年8月27日、GitHubの公式リリースノート(anthropics/claude-code)を実際に開いて確認した内容です。 v2.1.238(2026年8月20日公開)の変更点一覧に、次の記載があります(原文と訳)。

"Added a keybindingFlavor setting: set it to \"readline\" to make Ctrl+W in the prompt delete back to the previous whitespace, as in Bash; the default (\"classic\") is unchanged"

(訳:keybindingFlavor設定を追加。"readline"に設定すると、プロンプト内のCtrl+WがBashと同様、直前の空白まで削除するようになる。デフォルト("classic")は変更なし)

3行まとめ

  • keybindingFlavorという新設定で、プロンプト入力のキー操作をBash(GNU readline)風に切り替えられる。デフォルトは"classic"で挙動は変わらない
  • v2.1.238時点ではCtrl+Wの単語削除挙動のみが対象だったが、翌々日のv2.1.239で対象が拡大され、Alt+F・Ctrl/Option+→(単語末で停止)、Alt+D(単語削除)、Ctrl+Y(削除した単語のペースト)、句読点を単語の区切りとして扱う、という挙動もBash互換になった
  • この設定はターミナルのデフォルトキーバインドに慣れたBash/Zshユーザー向けの互換オプションで、既存ユーザーの挙動はデフォルトのままでは変わらない

Ctrl+Wの挙動の違い

多くのターミナルアプリケーション・CLIツールにおいて、Ctrl+Wは「直前の単語を削除する」ショートカットとして広く使われていますが、「単語」の区切り方の定義がツールによって微妙に異なることがあります。GNU Bash公式マニュアルでunix-word-rubout(Ctrl+Wに割り当てられているコマンド)の定義を確認すると、次のように説明されている。

"unix-word-rubout (C-w): Kill the word behind point, using white space as a word boundary, saving the killed text on the kill-ring."

(unix-word-rubout(Ctrl+W):カーソル位置より手前の単語を、空白を単語境界として使って削除し、削除したテキストをkill-ringに保存する)

つまりBashのCtrl+Wは「直前の空白まで削除する」という、空白を区切りとした削除であり、これは記号を含む単語(例えばファイルパスの /.)でも空白まで一気に削除する、という挙動になる。GNUマニュアルには、これと対をなすunix-filename-ruboutという別のコマンドも定義されており、こちらは空白に加えてスラッシュも単語境界として扱う、別の挙動だとされている。Claude CodeのCHANGELOGが説明するreadlineフレーバーのCtrl+Wは、このunix-word-ruboutの定義(空白のみが境界)に対応するものだ。

Claude CodeのkeybindingFlavorをデフォルトの"classic"から"readline"に変更すると、このBash流の「直前の空白まで削除」という挙動になる、というのが今回の変更内容です。

2日後のv2.1.239でさらに拡張

このリリースの2日後、v2.1.239(2026年8月21日公開)の変更点一覧には、次の追加記載がありました(原文と訳)。

"keybindingFlavor: \"readline\" now also matches Bash for word keys: Alt+F and Ctrl/Option+→ stop at the end of the word, Alt+D deletes to it (Ctrl+Y pastes it back), and punctuation separates words"

(訳:keybindingFlavor: "readline"が、単語操作系のキーでもBashに合わせるようになった。Alt+FとCtrl/Option+→は単語の末尾で停止し、Alt+Dはそこまで削除(Ctrl+Yで削除した単語をペーストし直せる)、句読点も単語の区切りとして扱われる)

つまり、初回リリース時点ではCtrl+Wの挙動だけが対象でしたが、わずか2日後のアップデートで、単語単位のカーソル移動(Alt+F、Ctrl/Option+→)、単語の削除(Alt+D)、削除した単語の復元(Ctrl+Y)、そして句読点の扱いまで、Bash準拠の範囲が一気に広がった、という経緯です。この短期間での機能拡張のスピード感は、設定を出してからユーザーのフィードバックを見て磨き込む、というリリースサイクルの一端を示していると考えられます。

誰のための設定か

長年ターミナルでBash・Zshを使ってきたエンジニアにとって、Ctrl+Wや単語単位の移動・削除のキー操作は指に染み付いた習慣になっていることが多く、アプリケーションごとに挙動が微妙に違うと誤操作の原因になります。keybindingFlavor: "readline"は、Claude Codeのプロンプト入力欄でもその慣れた挙動を再現するための互換設定だと理解できます。

デフォルトが"classic"のまま変更されていないため、既存ユーザーの操作性に影響はなく、設定したい人だけが明示的にオプトインする形になっています。

専用ドキュメントに、設定場所もclassicとの比較例もあった

週次アップデートまとめ(whats-new/2026-w34)から辿ると、Claude Code公式ドキュメントの「Interactive mode」ページに、keybindingFlavor専用の見出しセクション「Make editing keys follow readline conventions」があることが分かった。ここには、CHANGELOGの2行だけでは分からなかった具体的な設定方法と挙動比較が書かれている。

設定は~/.claude/settings.jsonに次のように追加する。

{
  "keybindingFlavor": "readline"
}

ドキュメントはclassicreadlineの違いを、実際に試して確認できる具体例で示している。

"To confirm, type fix the bug in src/utils/foo.ts in the prompt and press Ctrl+W. Claude Code removes src/utils/foo.ts. Under "classic" it removes only foo.ts."

(確認するには、プロンプトにfix the bug in src/utils/foo.tsと入力してCtrl+Wを押す。Claude Codeはsrc/utils/foo.tsをまるごと削除する。"classic"の場合はfoo.tsだけが削除される)

つまり、当初のCHANGELOGには書かれていなかった"classic"(デフォルト)の挙動が、ここで初めて具体的に分かる。classicのCtrl+Wは、パスの区切り文字(/)を単語の境界として扱い、直前の1階層だけを削除する。readlineはこの区切りを無視して、空白まで一気に削除する。

もう1つ別ページ「Settings reference」には、この設定の正式な型定義もあった。

項目 内容
文字列。"classic"(Ctrl+Wが直前の単語を削除)または"readline"(Ctrl+Wが直前の空白まで削除)
デフォルト "classic"
スコープ Any file(settings.jsonのどのスコープでも設定可能)
必要バージョン v2.1.238以降(Alt+F・Ctrl/Option+→・Alt+D・Ctrl+Yの拡張はv2.1.239以降)

「Interactive mode」ページにはもう1点、見落としやすい注記があった。

"This setting is separate from the keybindings configuration file: the word-editing commands aren't actions there, so you can't remap them in keybindings.json."

(この設定は、キーバインド設定ファイルとは別物だ。単語編集系のコマンドはそちら側のアクションとして扱われていないため、keybindings.jsonでは再マッピングできない)

つまり、Claude Codeにはkeybindings.jsonという別のキーバインドカスタマイズの仕組みがあるが、keybindingFlavorが制御する単語単位の編集キー(Ctrl+W・Alt+F・Alt+D・Ctrl+Y)はそちらの対象外で、settings.jsonkeybindingFlavorでしか切り替えられない、という設計上の切り分けがある。

自分の手元で実際にキー入力を試してはいない

  • 本記事で紹介したfix the bug in src/utils/foo.tsの例や、Alt+F・Alt+D・Ctrl+Yの挙動は、公式ドキュメントの記載をそのまま紹介したもので、この記事の執筆にあたって自分の手元のターミナルで実際にキーを叩いて確認したわけではない
  • macOSでAlt+F・Alt+Dを使うには別途「Option as Meta」という設定が必要、とドキュメントに注記があったが、この設定自体の詳細(ターミナルアプリ側でどう設定するか)までは本記事では踏み込んでいない
  • keybindingFlavorが「Any file」スコープに対応するという記載の詳しい意味(ユーザー全体・プロジェクト単位・ローカル設定など、settings.jsonのどのファイルに書いても有効という理解で合っているか)についても、設定スコープ全般を扱う別ページの詳細までは今回確認していない

関連記事

シェア: ポスト はてブ

出典・参照資料

AIニュースの解説を動画でも

YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

新しい記事をメールで受け取る

AIの新しい発表を、出典付きで整理して届けます。

関連記事