Claude Code で Ctrl+H が単語削除になる問題を1文字削除に直す
Claude Code(CLI)のプロンプト入力中に Ctrl+H を押すと、1文字ではなく単語ごとまとめて消えてしまう。
通常の Backspace と同じく「1文字だけ削除」したい、という挙動の調整メモです。
この記事はClaude Codeで生成。
PC環境
- OS: Windows 11 Pro(10.0.26200)
- ターミナル: Windows Terminal
- シェル: PowerShell 7(pwsh)
- ツール: Claude Code(CLI)
症状
- Claude Code のプロンプトで Ctrl+H を押すと単語単位で削除される
- 通常の Backspace キーは正しく1文字ずつ削除できる
- Ctrl+H でも Backspace と同じく1文字だけ削除したい
原因
ポイントは2つあります。
1. Claude Code のキーバインド設定では直せない
Claude Code の ~/.claude/keybindings.json(Windows では C:\Users\<ユーザー名>\.claude\keybindings.json)で再割り当てできる「アクション」の一覧には、入力欄での「1文字削除」「単語削除」に該当するアクションが存在しません。
テキスト入力欄の編集はキーバインド層より下(入力処理層)で処理されているためです。
そのため、以下のように ctrl+h を null にしても効果がありません(もともと ctrl+h にアクションが割り当てられていないため、消すものが無い)。
{"$schema": "https://www.schemastore.org/claude-code-keybindings.json","bindings": [{ "context": "Chat", "bindings": { "ctrl+h": null } }]}
2. 本当の原因はターミナルが送るバイト
ターミナルでは、各キーが特定のバイトをアプリへ送ります。
- Backspace キー → 0x7f(DEL)→ アプリ側で「1文字削除」
- Ctrl+H → 0x08(BS, ^H)→ アプリ側で「単語削除」として扱われる
つまり Ctrl+H が送る 0x08 を、Claude Code の入力処理が単語削除に割り当てているのが原因です。
解決策(Windows Terminal 側で Ctrl+H に DEL を送らせる)
Ctrl+H を押したときに、Backspace と同じ 0x7f(DEL)を送るように Windows Terminal を設定します。これで Ctrl+H が「1文字削除」になります。
設定ファイルの場所
C:\Users\<ユーザー名>\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
追加する内容
settings.json の actions 配列に、DEL を送る sendInput アクションを追加します。
{"command": {"action": "sendInput","input": "\u007f"},"id": "User.sendInput.CtrlHBackspace"}
\u007f が DEL(1文字削除)にあたる文字です。
続いて keybindings 配列で ctrl+h をそのアクションに割り当てます。
{"id": "User.sendInput.CtrlHBackspace","keys": "ctrl+h"}
編集後のイメージ(抜粋)
{"actions": [{"command": {"action": "sendInput","input": ""},"id": "User.sendInput.CtrlHBackspace"}],"keybindings": [{"id": "User.sendInput.CtrlHBackspace","keys": "ctrl+h"}]}
反映方法
Windows Terminal は settings.json を保存すると自動でリロードされるので、基本的にはそのまま反映されます。
効かない場合は Windows Terminal を再起動してください。
補足
- この設定は Windows Terminal 全体(PowerShell 以外のプロファイルを含む)で Ctrl+H が DEL を送るようになります。
- Claude Code 側の keybindings.json に書いた { "ctrl+h": null } は今回の件には無関係(効果なし)なので、不要なら削除して問題ありません。
- VS Code の統合ターミナルで同じことをしたい場合は、VS Code の keybindings.json に次を追加します。
{"key": "ctrl+h","command": "workbench.action.terminal.sendSequence","args": { "text": "" },"when": "terminalFocus"}
まとめ
- Ctrl+H が単語削除になるのは、ターミナルが 0x08(BS)を送っているのが原因。
- Claude Code のキーバインド設定では直せない(該当アクションが無い)。
- Windows Terminal で Ctrl+H に DEL(0x7f)を送らせれば、Backspace と同じ1文字削除になる。