Claude Media
terminal-setupコマンドでShift+Enterが効かないときの対処

terminal-setupコマンドでShift+Enterが効かないときの対処

VS CodeやCursorでShift+Enterが改行にならないときの原因と、terminal-setupコマンドでの直し方をまとめます。

Shift+Enterが送信になるときは、使っているターミナルで手が変わる

Claude CodeではEnterを押すとメッセージが送信されます。改行したいときはCtrl+J、または \ を入力してからEnterを押します。この2つはどのターミナルでも設定なしで動きます。

Shift+Enterによる改行は追加の選択肢で、効くかどうかはターミナルごとに分かれます。まずClaude Codeのバージョンを確かめます。表の「kitty keyboardプロトコル対応」の行は、v2.1.269以降が条件だからです。

claude --version

出力は 2.1.287 (Claude Code) の形で、先頭の数字がバージョンです。

手順

Shift+Enterが効かないときの確認順

  1. 1

    バージョンを確かめる

    claude --version の数字が2.1.269より前なら、kitty keyboardプロトコル対応端末でも設定が要ります。更新してから次へ進みます。

  2. 2

    tmuxの中で動かしていないか見る

    tmuxの中では、外側のターミナルが対応していてもShift+Enterは送信になります。~/.tmux.conf の追記が必要です(後述)。

  3. 3

    下の表で自分のターミナルの行を引く

    「設定不要」ならそのまま使えます。「/terminal-setup が必要」の行なら、次のステップへ進みます。

  4. 4

    ホストターミナルで /terminal-setup を実行する

    tmuxやscreenの外で直接実行します。「対応なし」の行ならこの手順は使えないため、Ctrl+Jか \ +Enterで改行します。

ターミナルごとの対応状況

対応状況は4つのグループに分かれます。

グループ該当ターミナル対応方法
設定不要で動く該当ターミナルGhostty、Kitty、iTerm2、WezTerm、Warp、Apple Terminal、Windows Terminal対応方法そのまま使える
kitty keyboardプロトコル対応該当ターミナルfootやAlacritty 0.16以降対応方法v2.1.269以降なら設定不要
/terminal-setupが必要該当ターミナルVS Code、Cursor、Devin Desktop、0.16より前のAlacritty、Zed対応方法一度コマンドを実行する
対応なし該当ターミナルgnome-terminal、PyCharmやAndroid StudioなどのJetBrains系IDE対応方法Ctrl+Jか\+Enterを使う

WezTermでは /terminal-setup とは別に、kitty keyboardプロトコル起因で記号やShift付き英字の入力が崩れる不具合が報告されています。詳しくはClaude CodeでWezTermの記号が入力できないときの対処法にまとめています。

実行手順と確認メッセージ

/terminal-setup

このコマンドがShift+Enterのキーバインドを、使っているターミナルまたはエディタの設定ファイルへ書き込みます。初回実行時は Installed VSCode terminal Shift+Enter key binding のような確認メッセージが表示されます。すでに設定済みの場合は VSCode terminal Shift+Enter key binding already configured と出て、既存の設定は上書きされません。

注意点が1つあります。tmuxやscreenの中ではなく、ホストターミナルで直接実行する必要があります。

VS Code系エディタで一緒に変わる2つの設定

VS Code、Cursor、Devin Desktopで /terminal-setup を実行すると、キーバインドのほかにエディタ設定も2つ変わります。

  • terminal.integrated.gpuAcceleration を "off" に設定(統合ターミナルの文字化け対策)
  • terminal.integrated.mouseWheelScrollSensitivity を調整(フルスクリーン表示時のスクロールを滑らかにする)

この2つは /terminal-setup の機能として後から加わったもので、スクロール感度はv2.1.116、GPUアクセラレーションはv2.1.157からです。claude --version がそれより古いと、キーバインド以外は変わりません。

GPUアクセラレーションの変更を元に戻したい場合は、設定を "auto" に戻してからウィンドウを再読み込みします。

Zedではkeymap.jsonを書き換える

Zedでの /terminal-setup は、keymap.json にShift+Enterのバインドを書き足します。ファイルを丸ごと上書きする動きではありません。v2.1.247より前には、keymap全体を上書きしてしまう不具合がありました。

くらべる

Zedで /terminal-setup を実行したときの2つの結果

通常

書き足せた場合

keymapに既にバインドがあり、その中にTerminalの shift-enter が無い場合です。元のファイルと同じ場所に keymap.json.1a2b3c4d.bak のような名前でバックアップを作ります。そのうえで、ほかのキーバインドとコメントを残したままShift+Enterのバインドを統合します。

ファイルは無変更

書き足せなかった場合

読み込み・構文解析・バックアップ・統合結果の検証のいずれかに失敗すると、ファイルには触れません。代わりにkeymapのパスと、追記するブロックを画面に表示します。

追記を求められたときのブロックは次の形です。パスは画面に出たkeymap.jsonのものに合わせます。

{ "context": "Terminal", "bindings": { "shift-enter": ["terminal::SendText", "\u001b\r"] } }

このブロックは、keymapの一番外側の配列に加えます。メッセージの1行目が原因を示します。

メッセージ原因
Couldn't read your Zed keymap原因ファイルの権限などで読み込めない
Your Zed keymap isn't a readable list of keybindings原因配列として解釈できない(// コメントと末尾カンマは許容)
Couldn't back up your Zed keymap; not modifying it.原因.bak のバックアップを作れなかったため、何も変更していない
Couldn't update your Zed keymap原因統合結果が有効なkeymapとして検証できなかった。キーの重複が原因になりうる

Your Zed keymap isn't a readable list of keybindings が出たときは、構文エラーを直すか最上位を配列にします。そのあと、もう一度 /terminal-setup を実行します。

tmuxを使っているときの追加設定

tmuxの中でClaude Codeを動かしている場合、外側のターミナルがShift+Enterに対応していても、既定ではShift+Enterが送信になります。通知やプログレスバーも外側のターミナルまで届きません。~/.tmux.conf に以下を追記し、tmux source-file ~/.tmux.conf で動作中のサーバーに反映します。

set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'

extended-keys の2行が、Shift+Enterと通常のEnterをtmuxが区別するための設定です。allow-passthrough は通知とプログレスバーを外側へ通す設定で、Shift+Enterとは別の問題を解きます。

tmuxやsshのセッションへ再接続したあとにShift+Enterが効かなくなる不具合は、エージェントビューの中ではv2.1.267で直っています。

Apple TerminalとiTerm2の自動設定

macOSのApple Terminalでは、意識しないところで /terminal-setup が動いていることがあります。Claude Code初回起動時のセットアッププロンプトを承諾すると、このコマンドが実行されます。

実行で変わるのは2つです。1つはOptionキーをMetaキーとして扱う設定で、Option+Enterでの改行やOption+Pでのモデル切り替えに必要です。もう1つは、ターミナルの可聴ベルを無音にする設定です。

スクリーンリーダーモードでは、ベルの設定は変更されません。v2.1.211より前は、このモードでもベルが無音になりました。過去にベルが鳴らなくなった心当たりがあれば、Settings → Profiles → Advancedの「Audible bell」から戻せます。

iTerm2では、クリップボードへのアクセスを許可する設定を有効にします。設定箇所はSettings → General → Selectionの「Applications in terminal may access clipboard」です。これで /copy がシステムのクリップボードに書き込めるようになります。

iTerm2の検出はtmuxの中から実行しても働きますが、反映にはiTerm2の再起動が必要です。Optionキー側の設定(Esc+への切り替え)や通知センターへの転送まで含めた手順はClaude CodeでiTerm2のOption keyとクリップボードを有効化するにまとめています。

それでも直らないときの代替策

/terminal-setup を実行しても改善しない場合に試せる手があります。

  • Ctrl+Jか\+Enterで代用する: 冒頭のとおり、ターミナルを選びません
  • EnterとShift+Enterの役割を入れ替える: chat:newline と chat:submit をkeybindingsファイルで割り当て直します。Enterで改行、Shift+Enterで送信にもできます
  • Vimモードを使っている場合: INSERTモードのEnterは標準のVimと違って送信のままです。NORMALモードで o か O を使うか、Ctrl+Jで改行します。v2.1.283では、Vimモードの . がShift+Enterで入れた改行を落とす不具合も直りました

Shift+Enter対応が広がってきた経緯

/terminal-setup と周辺の対応は、次のように段階的に広がってきました。

あゆみ

Shift+Enter関連の主な変更

  1. v2.0.74Kitty・Alacritty・Zed・Warpに対応

    /terminal-setup の対象ターミナルが増えました。

  2. v2.1.0iTerm2・WezTerm・Ghostty・Kittyは設定不要に

    ターミナル側の設定ファイルを変更しなくても、Shift+Enterが動くようになりました。

  3. v2.1.47Warpの誤った設定案内を修正

    WarpはShift+Enterをネイティブに扱えるのに、設定を促されてしまう不具合が直りました。

  4. v2.1.89Windows Terminal Preview 1.25の送信問題を修正

    このプレビュー版でShift+Enterが改行にならず送信されていた不具合が直りました。

  5. v2.1.116VS Code系のスクロール感度を設定

    Cursor・Windsurfを含む統合ターミナルで、フルスクリーン表示のスクロールを滑らかにするため、/terminal-setup がスクロール感度を調整するようになりました。

  6. v2.1.121iTerm2のクリップボード許可を自動化

    /copy が使えるように、設定を有効にする処理が入りました。

  7. v2.1.132Windows Terminalの誤案内を修正

    ネイティブ対応済みなのに、矛盾したエラーが表示される不具合が直りました。

  8. v2.1.157VS Code系でGPUアクセラレーションを無効化

    /terminal-setup が統合ターミナルのGPUアクセラレーションを切り、文字化けを防ぐ設定が加わりました。

  9. v2.1.162WindsurfがDevin Desktopに表記変更

    /ide メニューや /terminal-setup、/scroll-speed の表記が、エディタの改称に合わせて変わりました。

  10. v2.1.247Zedのkeymapを上書きする不具合を修正

    keymap全体ではなく、Shift+Enterのバインドだけを統合する動きになりました。

  11. v2.1.269kitty keyboardプロトコル対応端末で設定不要に

    footやAlacritty 0.16以降がShift+Enterをそのまま使えるようになりました。

エディタやマシンを替えたときの再設定

設定はそのエディタの設定ファイルに書かれるので、別のエディタや別のマシンでShift+Enterを使うときは、その環境でも /terminal-setup を実行します。

まとめ

Shift+Enterが効かない原因は、ターミナルの種類、Claude Codeのバージョン、tmuxの3つに絞れます。手元の環境がどれに当たるか分からないうちは、Ctrl+Jで改行しながら表の行を引くのが手早い進め方です。

キーボード操作全般をカスタマイズしたい場合はClaude Codeショートカット一覧を参考にしてください。通知音や完了アラートを整えたい場合はClaude Code Hooks完全ガイドが役立ちます。VS Code拡張全体の使い方はClaude Code VS Code拡張機能の使い方にまとめています。

この記事を共有:XはてブLinkedIn