2026年9月27日時点の結論。Claude Codeはどのターミナルでも設定なしで動く。だから「ターミナル設定」は全部やるものではなく、症状が出た所だけ直すものだ。改行が入らないなら Ctrl+J か \ を打ってからEnter、それでもShift+Enterで入れたいなら /terminal-setup を1回。終わったのに気付けないなら preferredNotifChannel を "terminal_bell" にする。tmuxの中なら ~/.tmux.conf に3行足す。画面がちらつくなら /tui fullscreen。Windowsでバックスペースが単語ごと消えるなら CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0。ここまでで実務の相談はほぼ終わる。
公式ドキュメントも「Claude Codeは設定なしでどのターミナルでも動く。このページは何かが期待どおりに動かない時のためのものだ」と明言している(Anthropic「Terminal configuration」(2026年9月確認))。順に全部設定する必要はない。
この記事の要点
- 改行:Enterは送信。改行は
Ctrl+J、または\を打ってからEnter。この2つはどのターミナルでも設定なしで動く。 - Shift+Enter:ターミナルによって扱いが3段階に分かれる。そのまま動くもの、
/terminal-setupを1回走らせるもの、使えないもの。 - Optionキー:macOSのほとんどのターミナルは既定でOptionを修飾キーとして送らない。「Use Option as Meta Key」相当の設定を入れるまでOption+Enterなどは効かない。
- 通知:既定でデスクトップ通知が出るのはGhostty、Kitty、iTerm2だけ。それ以外は
preferredNotifChannelを"terminal_bell"にするか、Notificationフックを使う。 - tmux:
allow-passthroughと拡張キーの3行が入るまで、Shift+Enterも通知も進捗バーも外側に届かない。 - ちらつき:
/tui fullscreenに切り替える。ちらつきだけならCLAUDE_CODE_FORCE_SYNC_OUTPUT=1で足りることがある。 - 対象読者:Claude CodeをターミナルのCLIで常用している開発者、チームの端末設定を揃える開発リード。
- 今日やること:いま使っているターミナルで
Ctrl+Jを押して改行が入るか確かめる。入るなら改行の問題はそこで終わる。入らない、あるいはShift+Enterで入れたいなら手順1へ進む。
前提|症状から引く
このページは網羅ではなく索引として使う。自分に出ている症状から入る。

| 症状 | 見る手順 |
|---|---|
| Shift+Enterで改行が入らず送信される | 手順1 |
| macOSでOptionキーのショートカットが何も起きない | 手順2 |
| 終わっても音も通知も出ない | 手順3 |
| tmuxの中で通知と進捗が届かない | 手順4 |
| Windowsでバックスペースが単語ごと消える | 手順5 |
| 画面がちらつく、スクロール位置が飛ぶ | 手順6 |
| 色が合わない、Vimキーで編集したい | 手順7 |
ここはターミナル側が正しい信号をClaude Codeに送るようにする話だ。Claude Code自身がどのキーに反応するかを変えたい場合は、キーバインドの設定が別にある(Anthropic「Customize keyboard shortcuts」(2026年9月確認))。
手順1|改行を入れる
Enterを押すとメッセージが送信される。送信せずに改行を入れる方法は2つあり、どちらも設定不要でどのターミナルでも動く。Ctrl+J を押すか、バックスラッシュ(\)を打ってからEnterを押す。

Shift+Enterの対応はターミナル次第
多くのターミナルではShift+Enterでも入るが、対応はターミナルエミュレータによって分かれる。
| ターミナル | Shift+Enterでの改行 |
|---|---|
| Ghostty、Kitty、iTerm2、WezTerm、Warp、Apple Terminal、Windows Terminal | 設定なしで動く |
| kittyキーボードプロトコルに対応する他のターミナル(footやAlacritty 0.16以降など) | 設定なしで動く。Claude Code v2.1.269以降が必要 |
| VS Code、Cursor、Devin Desktop、0.16より前のAlacritty、Zed | /terminal-setup を1回実行する |
| gnome-terminal、PyCharmやAndroid StudioなどのJetBrains IDE | 使えない。Ctrl+J か \ とEnterを使う |
kittyキーボードプロトコルに答えるターミナルへの対応は2.1.269で入った(anthropics/claude-code「CHANGELOG.md」2.1.269(2026年9月27日確認))。
/terminal-setupが実際に書き換えるもの
VS Code、Cursor、Devin Desktop、0.16より前のAlacritty、Zedでは、/terminal-setup がターミナルの設定ファイルにShift+Enterのキーバインドを書き込む。初回は Installed VSCode terminal Shift+Enter key binding のような確認メッセージが出る。既存のバインドはそのまま残され、VSCode terminal Shift+Enter key binding already configured のようなメッセージが出た場合は何も変えていない。
実行はホストのターミナルで直接行う。tmuxやscreenの中から走らせないこと。ホストターミナルの設定ファイルに書き込む必要があるためだ。
VS Code、Cursor、Devin Desktopでは、/terminal-setup はエディタ設定も2つ変える。統合ターミナルの文字化けを防ぐために terminal.integrated.gpuAcceleration を "off" にし、フルスクリーンモードでのスクロールを滑らかにするために terminal.integrated.mouseWheelScrollSensitivity を設定する。GPUアクセラレーションの変更を戻したい場合は "auto" に戻してエディタのウィンドウを再読み込みする。この設定項目そのものはVS Code側のドキュメントにある(Microsoft「Terminal Appearance」terminal.integrated.gpuAcceleration(2026年9月確認))。IDE統合そのものの話はClaude CodeのIDE統合(VS Code・JetBrains)にまとめてある。
Zedでは keymap.json をその場で更新する。既存のバインドがあってTerminalの shift-enter が含まれていない場合は、まず同じディレクトリに keymap.json.1a2b3c4d.bak のようなコピーを取ってから、他のキーバインドとコメントを保ったままShift+Enterのバインドをマージする。keymapを読めない、解析できない、バックアップできない、マージ結果を検証できないいずれかの場合は、ファイルを変更せず、自分で追加すべきキーバインドのブロックを表示する。Zedの keymap.json を丸ごと上書きしてしまう不具合は2.1.247で修正されている。
tmuxの中で動かしている場合、外側のターミナルがShift+Enterに対応していても、後述のtmux設定が別途必要になる。
なお、改行を別のキーに割り当てたい、あるいはEnterで改行してShift+Enterで送信する形に入れ替えたい場合は、キーバインドファイルで chat:newline と chat:submit のアクションを割り当てる。
手順2|macOSでOptionキーを効かせる
Claude CodeのショートカットのいくつかはOptionキーを使う。改行のOption+Enter、モデル切り替えのOption+Pなどだ。macOSではほとんどのターミナルが既定でOptionを修飾キーとして送らないため、有効にするまでこれらのショートカットは何も起きない。
ターミナルごとの設定場所
この設定はたいてい「Use Option as Meta Key」と表示されている。MetaはいまOptionやAltと書かれているキーの、歴史的なUnixでの呼び名だ。
| ターミナル | 設定場所 |
|---|---|
| Apple Terminal | Settings → Profiles → Keyboard の「Use Option as Meta Key」をチェック |
| iTerm2 | Settings → Profiles → Keys → General で Left Option key と Right Option key を「Esc+」にする |
| VS Code | 設定に "terminal.integrated.macOptionIsMeta": true を追加 |
| Ghostty、Kitty、その他 | 設定ファイルの Option-as-Alt または Option-as-Meta 相当の項目を探す |
初回セットアップを承認していた場合
Claude Codeの初回起動時のターミナルセットアップのプロンプトを承認していれば、Apple Terminalではこれは済んでいる。そのプロンプトは /terminal-setup を実行し、Optionをメタキーとして有効にし、あわせてApple Terminalのプロファイルの可聴ベルをオフにする。
スクリーンリーダーモードでは、/terminal-setup はベルの設定を変えずターミナルベルが鳴るままにする。v2.1.211より前は、スクリーンリーダーモードでもベルをオフにしていた。過去の実行でベルが切られてしまっている場合は、Settings → Profiles → Advanced の「Audible bell」で戻す。
iTerm2で /terminal-setup を実行すると、Settings → General → Selection の「Applications in terminal may access clipboard」も有効になり、/copy コマンドがシステムのクリップボードに書けるようになる。このコマンドはtmuxの中から実行してもiTerm2を検出する。変更を反映するにはiTerm2を再起動する。
手順3|終わったら音か通知で呼ばせる
長いタスクを回している間に他の作業へ移れるかどうかは、ここで決まる。Claudeがタスクを終えた時、あるいは権限プロンプトで止まった時に、あなたがターミナルから離れていると判断されると通知イベントが発火する。

既定でデスクトップ通知が出るのはGhostty、Kitty、iTerm2だけだ。それ以外のターミナルでは、preferredNotifChannel を "terminal_bell" にしてターミナルベルを鳴らすか、Notificationフックで独自の音やコマンドを設定する。
{
"preferredNotifChannel": "terminal_bell"
}
SSH越しでもデスクトップ通知は届く
デスクトップ通知はSSH越しでもローカルのマシンに届くので、リモートのセッションでも呼び出せる。GhosttyとKittyは追加設定なしでOSの通知センターへ転送する。iTerm2は転送を明示的に有効にする必要がある。
- Settings → Profiles → Terminal を開く
- 「Notification Center Alerts」をチェックし、「Filter Alerts」をクリックして「Send escape sequence-generated alerts」を有効にする
それでも通知が出ない場合は、ターミナルアプリにOS設定で通知の権限があるかを確認する。tmuxの中で動かしているなら、次の手順のパススルーが必要だ。
音を鳴らすNotificationフック
どのターミナルでも、Notificationフックで音を鳴らしたり任意のコマンドを走らせたりできる。フックは組み込みの通知を置き換えるのではなく並んで動くので、WarpやVS Codeの統合ターミナルのようにデスクトップ通知が届かないターミナルでも使える。
{
"hooks": {
"Notification": [
{
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
}
]
}
}
上はmacOSでシステム音を鳴らす例だ。Linux・Windows向けのデスクトップ通知コマンドはAnthropicの「Hooks reference」にある。フックの設計そのものはClaude Code Hooks実践ガイドで扱った。スマホ側で受け取る手段はClaude Codeのスマホ操作(Remote Control)が近い。
手順4|tmuxに3行足す
tmuxの中でClaude Codeを動かすと、既定ではShift+Enterが改行ではなく送信になり、デスクトップ通知と進捗バーが外側のターミナルに届かない。~/.tmux.conf に次の3行を足す。

set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
書いたら、動いているtmuxサーバーに反映する。
tmux source-file ~/.tmux.conf
allow-passthrough の行は、通知と進捗の更新をtmuxに飲み込ませずに外側のターミナルへ届かせる。extended-keys の2行は、tmuxがShift+Enterと素のEnterを区別できるようにして、改行のショートカットを動かす。tmuxの設定項目そのものはtmux「tmux wiki」(2026年9月確認)が一次情報になる。
同期出力とtmuxのバージョン
ちらつき対策としてtmux 3.4以降で同期出力を有効にする変更が2.1.200で入ったが、2.1.212のリリースノートでこれは訂正されている。訂正後の記述は「tmuxは3.6系まで同期出力を備えておらず、対応する新しいtmuxは自動で検出される」だ。手元のtmuxが3.6系以下なら、ちらつきはtmux側の同期出力では解決しない。手順6のレンダラ切り替えを使う。
手順5|Windowsでバックスペースが単語ごと消えるのを直す
Windowsでは、^H として届くバックスペースをClaude CodeはCtrl+Backspaceとして読み、直前の単語を削除する。例外は TERM_PROGRAM が mintty の場合と TERM が cygwin の場合だ。macOSとLinuxでは素のバックスペースとして読む。
環境変数で読み方を反転させる
バックスペースを押すたびに単語がまるごと消えるなら、そのターミナルは素のバックスペースとして ^H を送っている。次の環境変数を設定する。
CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0
これでバックスペースとCtrl+Hはどちらも1文字ずつ消すようになる。逆に、macOSやLinuxでターミナルがCtrl+Backspaceに ^H を送るために1文字しか消えない場合は、同じ変数を 1 にする。Windows側の環境構築全体はClaude CodeのWindows・WSL2セットアップにまとめてある。
手順6|ちらつきとスクロール飛びを止める
Claudeが作業している間に表示がちらつく、スクロール位置が飛ぶ、という症状は、レンダラを切り替えると止まる。

/tui fullscreen
このモードでは、ターミナル本来のスクロールバックではなく、Claude Codeの中でマウスやPageUpを使ってスクロールする。会話はそのまま引き継がれて再起動し、以後のセッションもフルスクリーンで始まる。環境変数でも指定できる。
CLAUDE_CODE_NO_FLICKER=1 claude
PowerShellなら次の形になる。
$env:CLAUDE_CODE_NO_FLICKER="1"; claude
settings.json の env に入れて固定することもできる。
{
"env": {
"CLAUDE_CODE_NO_FLICKER": "1"
}
}
レンダラを変えずにちらつきだけ止める
問題がちらつきだけで、ターミナルが同期出力に対応しているのに自動検出されていない場合(Emacsの eat など)は、レンダラを変えずに CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 を設定すればちらつきが止まる。フルスクリーンでの検索やコピーの作法はAnthropicの「Fullscreen rendering」にまとまっている。
スクリーンリーダーモードではこの節は当てはまらない。Claude Codeは常にプレーンなスクロールテキストとして描画し(アタッチしたバックグラウンドセッションを除く)、他のセッションで /tui fullscreen を実行すると切り替えの代わりに説明が表示される。
横幅が広すぎて読みにくい場合
広いターミナルではClaudeの応答の各行がウィンドウの幅いっぱいまで伸びる。決めた桁数で折り返したいなら maxProseWidth を設定する。この設定は2.1.282で追加された。表とコードブロックは幅いっぱいのまま保たれる。
手順7|テーマとVimモードを合わせる
見た目とキー操作の最後の調整だ。テーマは /theme コマンド、または /config のテーマピッカーで選ぶ。autoを選ぶとターミナルの明暗を検出するので、ターミナルがOSの外観変更に追従する限りテーマも追従する。Claude Codeはターミナル自身のカラースキームを制御しないので、そこはターミナルアプリ側で設定する。
自作テーマの置き場
/theme は組み込みプリセットに加えて、自分が定義したカスタムテーマと、インストール済みプラグインが提供するテーマを一覧に出す。一覧の末尾の New custom theme… を選ぶと対話的に作れる。カスタムテーマが選択された状態で Ctrl+E を押すと編集できる。
カスタムテーマは ~/.claude/themes/ に置くJSONファイルだ。拡張子を除いたファイル名がテーマのスラッグになり、選択すると設定には custom:<slug> が保存される。
| フィールド | 中身 |
|---|---|
name |
/theme に出る表示名。既定はファイル名のスラッグ |
base |
元にする組み込みプリセット。dark、light、dark-daltonized、light-daltonized、dark-ansi、light-ansi のいずれか。既定は dark |
overrides |
色トークン名から色値へのマップ。ここに無いトークンはベースのプリセットに従う |
{
"name": "Dracula",
"base": "dark",
"overrides": {
"claude": "#bd93f9",
"error": "#ff5555",
"success": "#50fa7b"
}
}
色値は #rrggbb、#rgb、rgb(r,g,b)、ansi256(n)、ansi:<name> を受け付ける。<name> は red や cyanBright のような16の標準ANSI色名だ。未知のトークンと不正な色値は無視されるので、打ち間違いで表示が壊れることはない。
Claude Codeは ~/.claude/themes/ を監視してファイルの追加・変更で再読み込みするため、エディタでの編集が動いているセッションに再起動なしで反映される。ただし起動時に ~/.claude/themes/ フォルダ自体が存在しなかった場合は、最初のテーマファイルを作ったあとに1回だけ再起動が必要だ。日本語表示まわりの設定はClaude Codeの日本語設定にまとめてある。
プロンプトをVimキーで編集する
プロンプト入力にはVim風の編集モードがある。/config → Editor mode、または ~/.claude/settings.json の editorMode を "vim" にして有効にする。戻す時はEditor modeを normal に戻す。
対応しているのはNORMALモードとVISUALモードのモーションと演算子の一部だ。hjkl の移動、v / V の選択、テキストオブジェクトを伴う d / c / y などが使える。Vimのモーションはキーバインドファイルでは再割り当てできない。jj のようなINSERTモードの2キーの並びをEscapeに割り当てたい場合は、ユーザー設定の vimInsertModeRemaps を使う。
素のVimと違い、INSERTモードでもEnterはプロンプトを送信する。改行を入れたい時はNORMALモードで o か O、あるいは Ctrl+J を使う。settings.json の全体像は本サイトのsettings.json設定完全ガイドにある。
大きな貼り付けの扱い
800文字を超える、または3行を超える内容をプロンプトに貼ると、Claude Codeは入力欄を使える状態に保つために [Pasted text #1 +120 lines] のようなプレースホルダに畳む。送信時には全文が送られる。
大きい入力はファイル経由にする
ファイル全体や長いログのような非常に大きい入力は、貼るのではなくファイルに書いてClaudeに読ませるほうがよい。会話のトランスクリプトが読める状態のまま保たれ、以後のターンでもClaudeがパスで参照できる。VS Codeの統合ターミナルは、非常に大きな貼り付けでClaude Codeに届く前に文字を落とすことがあるので、そこでは特にファイル経由にする。画像を渡す場合の扱いはClaude Codeに画像を渡す3つの方法で扱った。
貼り付けに不可視のUnicode文字が含まれていた場合、Claude CodeはEnterを押した時にそれを取り除き、きれいにしたプロンプトを入力欄に戻す。もう一度Enterを押して送る。
プレースホルダを消してしまった時
Ctrl+W や Ctrl+K のような単語・行単位の削除、あるいは df] のような f / t モーションを伴うVimの削除で、削除範囲が [Pasted text #N] のプレースホルダの内側に届くと、Claude Codeはプレースホルダをまるごと取り除く。戻すには、単語・行単位の削除のあとなら Ctrl+Y で貼り戻し、Vimの削除のあとならNORMALモードで p を使う。
貼り付けの中身は ~/.claude/paste-cache/ に保持されるので、コマンド履歴からプロンプトを呼び出して再送信すると、後のセッションでも全文が再送される。ただしキャッシュファイルは cleanupPeriodDays の保持期間の掃除で削除されるため、呼び出したプロンプトが既に無い貼り付けを参照していることもある。その場合、Claude Codeは [Pasted text #N] という文字列そのものを送ることはなく、欠けている貼り付けを名指しした通知を出す。本文が残っている普通のプロンプトではプレースホルダを取り除いて残りを送り、シェルモードのコマンドや / コマンドのように取り除くと実行内容が変わる場合、および取り除くと空になる場合は送信を取り消して入力欄に元のテキストを残す。
よくある失敗と対処
改行とキーの失敗
❌ JetBrains IDEのターミナルで /terminal-setup を何度も走らせた
⭕ gnome-terminalとJetBrains IDEはShift+Enterに対応していない。Ctrl+J か \ とEnterを使う。
❌ tmuxの中から /terminal-setup を実行した
⭕ ホストターミナルの設定ファイルに書き込むコマンドなので、ホストのターミナルで直接実行する。
❌ 外側のターミナルが対応しているからtmux設定は不要だと考えた
⭕ tmuxの中では、外側が対応していてもShift+Enterに extended-keys の設定が必要になる。
通知の失敗
❌ Warpでデスクトップ通知が出ないのを不具合だと思った
⭕ 既定でデスクトップ通知が出るのはGhostty、Kitty、iTerm2だけだ。preferredNotifChannel を "terminal_bell" にするか、Notificationフックを使う。
❌ iTerm2で通知設定をチェックしただけで終わった
⭕ 「Notification Center Alerts」に加えて「Filter Alerts」の中の「Send escape sequence-generated alerts」も有効にする必要がある。
❌ スクリーンリーダー利用時にベルが鳴らなくなったまま放置した
⭕ v2.1.211より前の /terminal-setup はスクリーンリーダーモードでもベルをオフにしていた。Settings → Profiles → Advanced の「Audible bell」で戻す。
表示の失敗
❌ ちらつき対策で常にフルスクリーンへ切り替えた
⭕ ちらつきだけが問題で同期出力に対応している端末なら、CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 でレンダラを変えずに済む。
❌ カスタムテーマのファイルを作って反映されないと判断した
⭕ 起動時に ~/.claude/themes/ が無かった場合は、最初のテーマファイルを作ったあとに1回だけ再起動が要る。
よくある質問
Shift+Enterを設定せずに改行だけ入れたい
Ctrl+J を押すか、\ を打ってからEnterを押す。どちらも設定なしでどのターミナルでも動く。
Enterで改行、Shift+Enterで送信に入れ替えられますか
できる。キーバインドファイルで chat:newline と chat:submit のアクションを割り当てる。Vimモードのモーションはキーバインドファイルでは再割り当てできない点に注意する。
/terminal-setupは既存のキーバインドを壊しますか
既存のバインドはそのまま残される。すでに設定済みなら already configured のようなメッセージが出て何も変えない。Zedの keymap.json はバックアップを取ってからマージし、読めない・検証できない場合はファイルを変えずに追加すべきブロックを表示する。
tmuxの中で通知が届きません
~/.tmux.conf に set -g allow-passthrough on を入れて tmux source-file ~/.tmux.conf で反映する。パススルーが無いとtmuxが通知と進捗を飲み込む。
tmuxを3.4以降にすればちらつきは直りますか
直らない。2.1.212のリリースノートで「tmuxは3.6系まで同期出力を備えていない」と訂正されている。対応する新しいtmuxは自動検出されるが、3.6系以下なら /tui fullscreen か CLAUDE_CODE_FORCE_SYNC_OUTPUT=1 を使う。
Windowsでバックスペースが1文字ずつ消えるようにしたい
CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0 を設定する。TERM_PROGRAM が mintty、または TERM が cygwin の場合は既定で素のバックスペースとして読まれるため、この設定は要らない。
大きなログを貼ったら途中が消えました
VS Codeの統合ターミナルは非常に大きな貼り付けでClaude Codeに届く前に文字を落とすことがある。ファイルに書いてパスで読ませる。
あわせて読みたい
- Claude Code IDE統合|VS Code・JetBrains:エディタ内で使う場合の全体像。
- Claude CodeのWindows・WSL2セットアップ:Windows側の環境構築。
- Claude Codeの日本語設定:表示と入力の日本語まわり。
- Claude Code Hooks実践ガイド:Notificationフックの書き方。
- Claude Code settings.json設定完全ガイド:
envやeditorModeの置き場所。
運営元 Uravation よりこの事例を自社の業務で試す場合のテーマ選定・評価・本番移行の確認項目を、無料のチェックリストにまとめています。 Claude Code業務自動化PoCチェックリストを受け取る(無料)
参考・出典
- Anthropic「Terminal configuration」(改行・Optionキー・通知・tmux・Backspace・テーマ・Vimモード・貼り付け・2026年9月確認)
- Anthropic「Customize keyboard shortcuts」(chat:newline / chat:submit・2026年9月確認)
- Anthropic「Fullscreen rendering」(2026年9月確認)
- Anthropic「Hooks reference」(Notificationフック・2026年9月確認)
- Anthropic「Settings」(preferredNotifChannel / env / editorMode・2026年9月確認)
- Anthropic「Interactive mode」(ショートカット一覧とVimキー表・2026年9月確認)
- anthropics/claude-code「CHANGELOG.md」(2.1.200 / 2.1.212 / 2.1.247 / 2.1.269 / 2.1.282・2026年9月27日確認)
- tmux「tmux wiki」(2026年9月確認)
- Microsoft「Terminal Appearance」(terminal.integrated.gpuAcceleration・2026年9月確認)