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文字削除になる。 

▼ 関連記事