terminal-setupコマンドでShift+Enterが効かないときの対処
VS CodeやCursorでShift+Enterが改行にならないときの原因と、terminal-setupコマンドでの直し方をまとめます。
terminal-setupコマンドでできること
/terminal-setup は、使っているターミナルの設定ファイルにShift+Enterなどのキーバインドを書き込むコマンドです。Claude Codeはどのターミナルでも基本的な動作はしますが、Shift+Enterによる改行だけは対応状況がターミナルごとに分かれます。効かないと感じたら、まずこのコマンドを疑うのが近道です。
改行そのものはCtrl+J、または \ を入力してからEnterを押す方法ならどのターミナルでも設定なしで動きます。Shift+Enterはあくまで追加の選択肢という位置づけです。
改行の目的だけならCtrl+Jか\+Enterで十分ですが、長い指示を複数行に分けて書きたい場面ではShift+Enterのほうが直感的です。すでに手が慣れているキー操作をそのまま使えるかどうかは、日々の作業感覚に地味に効いてきます。
Shift+Enterが効くターミナル・効かないターミナル
対応状況は次の3グループに分かれます。
| グループ | 該当ターミナル | 対応方法 |
|---|---|---|
| 設定不要で動く | 該当ターミナルGhostty、Kitty、iTerm2、WezTerm、Warp、Apple Terminal、Windows Terminal | 対応方法そのまま使える |
/terminal-setupが必要 | 該当ターミナルVS Code、Cursor、Devin Desktop、Alacritty、Zed | 対応方法一度コマンドを実行する |
| 対応なし | 該当ターミナルgnome-terminal、PyCharmやAndroid StudioなどのJetBrains系IDE | 対応方法Ctrl+Jか\+Enterを使う |
VS Codeの統合ターミナルで新規プロジェクトを開いたときにShift+Enterで改行できないのは、初期状態がこの表のとおりだからです。バグではなく、/terminal-setupを一度実行していないだけのケースがほとんどです。
なぜターミナルによって対応が分かれるのか
Shift+Enterのようなキーの組み合わせは、ターミナルアプリがそれをどんな信号としてアプリケーションに伝えるかに左右されます。GhosttyやKittyのように拡張キーレポートに対応したモダンなターミナルなら、Shift付きのEnterを通常のEnterと区別して送信する仕組みです。一方でVS Codeの統合ターミナルのように、エディタが内部でターミナルを実装しているタイプは、この区別に対応する設定が別途必要になることがあります。
/terminal-setup の役割は、この差を埋めるために各ターミナル・エディタの設定ファイルへ必要なキーバインドを書き込むことです。ターミナルごとに設定ファイルの形式も置き場所も違うため、手作業で揃えるより自動化したほうが確実です。どのファイルをどう書き換えるかを覚えておく必要もありません。
実行手順と確認メッセージ
/terminal-setup初回実行時は 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を調整(フルスクリーン表示時のスクロールを滑らかにする)
GPUアクセラレーションの変更を元に戻したい場合は、設定を "auto" に戻してからウィンドウを再読み込みします。文字化けが起きていないなら戻す必要はありません。
tmuxを使っているときの追加設定
tmuxの中でClaude Codeを動かしている場合、外側のターミナルがShift+Enterに対応していても状況は変わりません。tmux自体がShift+Enterを通常の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を区別できるようにする設定です。allow-passthrough は通知やプログレスバーが外側のターミナルまで届くようにする設定で、Shift+Enterとは別の問題ですが同じファイルにまとめて書いておくと管理が楽です。3行まとめて追記しておけば、あとから見返す必要もありません。
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でも /terminal-setup は一手間を代行します。クリップボードへのアクセスを許可する設定を有効にする処理です。設定箇所はSettings → General → Selectionの「Applications in terminal may access clipboard」です。これにより /copy コマンドがシステムのクリップボードに書き込めるようになります。この検出はtmuxの中から実行しても機能しますが、設定を反映するにはiTerm2の再起動が必要です。
それでも直らないときの代替策
/terminal-setup を実行しても改善しない場合に確認したい点です。
- Ctrl+Jか
\+Enterで代用する: この2つはどのターミナルでも確実に動きます。急ぎのときはこちらを使う手もあります - キーバインドの入れ替えを検討する: EnterとShift+Enterの役割を逆にしたい場合は、
chat:newlineとchat:submitをkeybindingsファイルでマップし直します - 対応表にないターミナルを使っていないか確認する: gnome-terminalやJetBrains系IDEはそもそも対応外です。設定を探しても見つからないのはこれが理由です
terminal-setupが対応してきた範囲の広がり
/terminal-setup の対応ターミナルは段階的に拡張されてきました。v2.0.74でKitty・Alacritty・Zed・Warpへの対応が加わり、v2.1.121ではiTerm2のクリップボードアクセス設定(/copyコマンド用)も自動化されました。v2.1.132ではWindows Terminalに対する誤ったエラー表示(ネイティブ対応済みなのに未設定と案内してしまう不具合)が修正されています。エディタ名の変更にも追随しており、v2.1.162ではWindsurfからDevin Desktopへの呼称変更がリスト表記に反映されました。
エディタを乗り換えたときの再設定
複数の開発マシンを使っている場合も、マシンごとに /terminal-setup を実行する必要があります。設定はホームディレクトリ内の設定ファイルに書き込まれるため、別のマシンには自動で反映されません。新しいマシンをセットアップしたときに忘れがちな手順の1つです。
エディタを乗り換えた場合も注意が必要です。VS CodeからCursorへ、あるいはCursorからDevin Desktopへ移ると、以前のエディタで実行した /terminal-setup の設定は引き継がれません。設定ファイルの書き込み先がエディタごとに異なるためです。新しいエディタの統合ターミナルでも改めて /terminal-setup を実行する必要があります。
複数のエディタを併用している場合も同様です。VS CodeとCursorの両方でShift+Enterを使いたいなら、それぞれの統合ターミナルで一度ずつ /terminal-setup を実行してください。一度設定すれば、そのエディタを使い続ける限り再設定は不要です。
よくある質問
Shift+Enterを設定しても改行にならない場合は
エディタを再起動していないと反映されないことがあります。/terminal-setup 実行後にVS Codeなどのウィンドウを一度再読み込みしてから試してください。
逆にEnterで改行、Shift+Enterで送信にできるか
できます。keybindingsファイルで chat:newline と chat:submit に割り当てるキーを入れ替えれば挙動を反転できます。
文字化けが起きるようになった場合はどうするか
/terminal-setup がVS Code系エディタで自動的にGPUアクセラレーションを無効化するため、通常は発生しません。他の原因で発生している場合は、設定を "auto" に戻さず維持したうえで別の原因を切り分けてください。
tmux配下でも/terminal-setupは検出されるか
iTerm2のクリップボード設定についてはtmux内からでも検出されます。ただしコマンド自体はホストターミナルで実行する必要がある点は変わりません。
まとめ
Shift+Enterが効かない原因の多くは、/terminal-setup が必要なエディタで実行していないことです。対象はVS Code・Cursor・Devin Desktop・Alacritty・Zedです。実行すればキーバインドとエディタ設定がまとめて整います。tmux配下ならさらに .tmux.conf の追記が必要になります。それでも解決しない場合は、Ctrl+Jか \ +Enterを確実な代替として使ってください。
キーボード操作全般をカスタマイズしたい場合はClaude Codeショートカット一覧を参考にしてください。通知音や完了アラートを整えたい場合はClaude Code Hooks完全ガイドが役立ちます。VS Code拡張全体の使い方はClaude Code VS Code拡張機能の使い方にまとめています。