Claude Code(Windows Terminal)で Shift + Enter を改行にする方法
Windows Terminalの PowerShell から Claude Code を起動すると、改行が Ctrl + Enter に割り当てられていて、他のアプリと操作感が違って戸惑ったときの覚書。 この記事はClaudeアプリで生成。 なぜ Shift + Enter が効かないのか Claude Code は本来 Shift + Enter での改行に対応しています。 にもかかわらず効かないのは、Windows Terminal がデフォルトで Enter と Shift + Enter にまったく同じバイト列(エスケープシーケンス)を送ってしまうからです。 その結果、Claude Code 側では両者を区別できず、Shift + Enter を押しても「Enter(=送信)」と同じ扱いになってしまいます。 これは Windows Terminal に限らず、多くのターミナルが抱える古くからの仕様です。 iTerm2 や WezTerm などは独自にこの問題を解決していますが、Claude Code の /terminal-setup コマンドの対応リストに Windows Terminal は含まれていません。 そのため、Windows Terminal では自分で設定を追加する必要があります。 解決策:settings.json を設定 ポイントは、Shift + Enter を押したときに CSI u という現代的なキー入力エンコード(\u001b[13;2u)を送るよう Windows Terminal に教えてあげることです。 これにより Claude Code が Shift + Enter を「ただの Enter」と区別できるようになります。 設定ファイルを開く Windows Terminal で次の手順で設定ファイルを開きます。 設定(Ctrl + ,)を開く 左下の「JSON ファイルを開く」をクリック settings.json がエディタで開きます。 新しい形式(actions と keybindings が分離している場合) 最近の Windows Terminal では、コマンドの定義(actions)とキー割り当て(keybindings)が 2つの配列に分離しています。 この場合は、両方に1つずつ追記します。 1. acti...