- Shift+Enter が改行を挿入する代わりに送信する
- macOS でオプションキーのショートカットが機能しない
- Claude の処理完了時に音またはアラートが出ない
- Claude Code を tmux 内で実行している
- Windows でバックスペースが単語全体を削除する
- 表示がちらつくまたはスクロールバックがジャンプする
- プロンプトで Vim キーを使いたい
複数行のプロンプトを入力する
Enter キーを押すとメッセージが送信されます。送信せずに改行を追加するには、Ctrl+J を押すか、\ を入力してから Enter を押してください。どちらの方法もセットアップなしですべてのターミナルで機能します。
ほとんどのターミナルでは Shift+Enter を押すこともできますが、サポートはターミナルエミュレータによって異なります。
VS Code、Cursor、Devin Desktop、Alacritty 0.16 より前のバージョン、Zed の場合、
/terminal-setup はターミナルの設定ファイルに Shift+Enter キーバインディングを書き込みます。初回実行時には Installed VSCode terminal Shift+Enter key binding などの確認メッセージが表示されます。既存のバインディングはそのまま保持されます。VSCode terminal Shift+Enter key binding already configured などのメッセージが表示される場合は、変更は加えられていません。/terminal-setup は tmux または screen の内部ではなく、ホストターミナル内で直接実行してください。ホストターミナルの設定に書き込む必要があるためです。
VS Code、Cursor、Devin Desktop では、/terminal-setup は 2 つのエディタ設定も更新します。統合ターミナルでのテキストの乱れを防ぐために terminal.integrated.gpuAcceleration を "off" に設定し、フルスクリーンモードでのスムーズなスクロールのために terminal.integrated.mouseWheelScrollSensitivity を設定します。GPU アクセラレーション変更を元に戻すには、"auto" に設定し直してエディタウィンドウをリロードしてください。
Zed では、/terminal-setup は keymap.json をその場で更新します。
- キーマップに既にバインディングがあり、そのいずれもターミナルの
shift-enterではない場合、Claude Code はまずそれを同じディレクトリ内のコピー(keymap.json.1a2b3c4d.bakなど)にバックアップしてから、Shift+Enter バインディングをキーマップにマージし、他のキーバインディングとコメントを保持します - Claude Code がキーマップを読み込めない、解析できない、バックアップできない、またはマージされた結果を検証できない場合、ファイルを変更せず、追加するキーバインディングブロックを出力します
chat:newline および chat:submit アクションをマップしてください。
macOS で Option キーショートカットを有効にする
Claude Code の一部のショートカットは Option キーを使用します。例えば、Option+Enter で改行したり、Option+P でモデルを切り替えたりします。macOS では、ほとんどのターミナルはデフォルトで Option を修飾キーとして送信しないため、これを有効にするまでこれらのショートカットは機能しません。ターミナル設定は通常「Use Option as Meta Key」というラベルが付いています。Meta は、現在 Option または Alt というラベルが付いているキーの歴史的な Unix 名です。- Apple Terminal
- iTerm2
- VS Code
設定 → プロファイル → キーボードを開き、「Use Option as Meta Key」をチェックします。Claude Code の初回実行時のターミナルセットアッププロンプトを受け入れた場合、これはすでに完了しています。そのプロンプトは
/terminal-setup を実行し、Option を Meta として有効にし、Apple Terminal プロファイルで可聴ベルをオフにします。スクリーンリーダーモードでは、/terminal-setup はベル設定を変更しないままにするため、ターミナルベルは可聴のままです。v2.1.211 より前では、/terminal-setup はスクリーンリーダーモードでもベルをオフにしていました。以前の実行でベルがオフになった場合は、設定 → プロファイル → 詳細 → 「可聴ベル」でオンに戻してください。ターミナルベルまたは通知を取得する
Claude がタスクを完了するか権限プロンプトで一時停止し、ターミナルから離れているように見える場合、通知イベントが発火します。各通知タイプが発火するタイミングを参照して、正確なタイミングを確認してください。これをターミナルベルまたはデスクトップ通知として表示することで、長いタスクが実行されている間に他の作業に切り替えることができます。 デフォルトでは Claude Code は Ghostty、Kitty、および iTerm2 でのみデスクトップ通知を送信します。他のターミナルでは、preferredNotifChannelを"terminal_bell"に設定してターミナルベルを鳴らすか、カスタム音またはコマンド用に通知フックを設定してください。次の設定エントリはターミナルベルをオンにします:
~/.claude/settings.json
1
Open iTerm2 notification settings
Go to Settings → Profiles → Terminal.
2
Enable alerts
Check “Notification Center Alerts”, then click “Filter Alerts” and enable “Send escape sequence-generated alerts”.
通知フックで音を再生する
任意のターミナルで通知フックを設定して、Claude があなたの注意が必要な場合に音を再生するか、カスタムコマンドを実行できます。フックは組み込み通知と並行して実行され、それを置き換えるのではなく、Warp や VS Code 統合ターミナルなどのデスクトップ通知を受け取らないターミナルは、フックを使用するか、代わりにpreferredNotifChannelを"terminal_bell"に設定できます。
以下の例は macOS でシステム音を再生します。リンクされたガイドには、macOS、Linux、および Windows のデスクトップ通知コマンドがあります。
~/.claude/settings.json
tmux を設定する
Claude Code が tmux 内で実行される場合、デフォルトでは Shift+Enter が改行を挿入する代わりに送信してしまい、デスクトップ通知とプログレスバーが外側のターミナルに到達しません。これらの行を~/.tmux.conf に追加してから、tmux source-file ~/.tmux.conf を実行して、実行中のサーバーに適用してください。
~/.tmux.conf
allow-passthrough 行により、通知とプログレス更新が tmux に飲み込まれるのではなく、外側のターミナルに到達できるようになります。extended-keys 行により、tmux が Shift+Enter と通常の Enter を区別できるようになり、改行ショートカットが機能するようになります。
Windows で Backspace がワード全体を削除する問題を修正する
Windows では、Claude Code は Backspace として到着した^H を Ctrl+Backspace として読み込み、前のワードを削除します。ただし、TERM_PROGRAM が mintty または TERM が cygwin の場合は除きます。macOS と Linux では、Claude Code はこれをプレーン Backspace として読み込みます。
Backspace を押すたびにワード全体が削除される場合、ターミナルはプレーン Backspace に対して ^H を送信しています。CLAUDE_CODE_BS_AS_CTRL_BACKSPACE=0 を設定してください。その後、Backspace と Ctrl+H は各々 1 文字を削除します。macOS または Linux で Ctrl+Backspace が 1 文字だけを削除する場合、ターミナルが ^H を送信しているため、代わりに変数を 1 に設定してください。
カラーテーマを合わせる
/theme コマンドを使用するか、/config のテーマピッカーを使用して、ターミナルに合わせた Claude Code テーマを選択します。auto オプションを選択すると、ターミナルの明るい背景または暗い背景が検出されるため、ターミナルが OS の外観の変更に従うたびにテーマが従います。Claude Code はターミナルアプリケーションによって設定されるターミナル自体のカラースキームを制御しません。
インターフェースの下部に表示される内容をカスタマイズするには、現在のモデル、作業ディレクトリ、git ブランチ、またはその他のコンテキストを表示するカスタムステータスラインを設定します。
カスタムテーマを作成する
組み込みプリセットに加えて、/theme には定義したカスタムテーマと、インストール済みのプラグインによって提供されたテーマが一覧表示されます。リストの最後にある**新しいカスタムテーマ…**を選択して、対話的に作成します。テーマに名前を付けてから、個別のカラートークンを選択してオーバーライドします。カスタムテーマがハイライトされている間に Ctrl+E を押して編集します。
各カスタムテーマは ~/.claude/themes/ 内の JSON ファイルです。.json 拡張子を除いたファイル名がテーマのスラッグであり、テーマを選択すると custom:<slug> がテーマの設定として保存されます。ファイルには 3 つのオプションフィールドがあります。
カラー値は
#rrggbb、#rgb、rgb(r,g,b)、ansi256(n)、または ansi:<name> を受け入れます。ここで <name> は red や cyanBright などの 16 個の標準 ANSI カラー名の 1 つです。不明なトークンと無効なカラー値は無視されるため、タイプミスはレンダリングを破壊することはできません。
次の例は、暗いプリセットを保持しながら、プロンプトアクセント、エラーテキスト、成功テキストを再色付けするテーマを定義しています。
~/.claude/themes/dracula.json
~/.claude/themes/ を監視し、ファイルが追加または変更されるとリロードするため、エディターで行われた編集は再起動なしで実行中のセッションに適用されます。Claude Code の起動時に ~/.claude/themes/ フォルダ自体が存在しなかった場合は、最初のテーマファイルを作成した後に 1 回再起動します。その後、変更は再起動なしで適用されます。
以下のリファレンスは、overrides で設定できるトークンをカバーしています。/theme の対話的エディターは、同じトークンをライブプレビューと共に表示し、さらにオンボーディング画面のカラーなどの単一目的のアクセントをいくつか表示します(ここでは省略されています)。
カラートークンリファレンス
カラートークンリファレンス
次の例は、以下のいくつかのグループからトークンを組み合わせています。ブランドアクセント、プランモードボーダー、diff 背景、およびメッセージ背景です。
~/.claude/themes/midnight.json
テキストとアクセントカラー
プライマリブランドアクセントと、インターフェース全体で使用されるフォアグラウンドテキストの色合いを制御します。ステータスカラー
メッセージとインジケーター全体で成功、失敗、警告状態を通知します。入力ボックスとモードインジケーター
入力ボックスのボーダーカラーと、パーミッションモードまたはインジケーターがアクティブな間に表示されるアクセントを設定します。Diff レンダリング
ファイル編集とレビューで追加および削除されたコードを色付けします。フルスクリーンモード
Claude Code は、デフォルトとフルスクリーンレンダラーの両方でuserMessageBackground、bashMessageBackgroundColor、および memoryBackgroundColor を描画します。フルスクリーンレンダリングモードでのみ userMessageBackgroundHover と selectionBg を使用します。使用量メーターとスピーカーラベル
/usage ビューに表示されるバーと、メッセージを Claude のメッセージと区別するラベルを調整します。シマーバリアントとサブエージェントカラー
いくつかのトークンには、スピナーのアニメーション化されたグラデーションで使用される明るいカラーを提供するペアのシマーバリアントがあります。アニメーションが一致しないように見える場合は、ベーストークンと一緒にシマーをオーバーライドします。claudeとclaudeShimmerwarningとwarningShimmerpermissionとpermissionShimmerpromptBorderとpromptBorderShimmerinactiveとinactiveShimmerfastModeとfastModeShimmer
<color>_FOR_SUBAGENTS_ONLY パターンに従います。ここで <color> は red、blue、green、yellow、purple、orange、pink、または cyan です。これらをオーバーライドして、各名前付きカラーの外観を変更します。たとえば、定義に color: blue を持つサブエージェントは、blue_FOR_SUBAGENTS_ONLY 値を使用して描画されます。Claude Code は、プロンプト入力で ultrathink キーワードを 7 色の虹グラデーションでレンダリングします。トークン名は rainbow_<color> と rainbow_<color>_shimmer パターンに従います。ここで <color> は red、orange、yellow、green、blue、indigo、または violet です。フルスクリーンレンダリングに切り替える
スクリーンリーダーモードでは、このセクションは適用されません。Claude Code は、添付されたバックグラウンドセッションを除き、常にプレーンなスクロールテキストとしてレンダリングされます。また、他のセッションで/tui fullscreen を実行した場合、Claude Code はレンダラーを切り替える代わりに説明を出力します。
ディスプレイがちらつくか、Claude が作業中にスクロール位置がジャンプする場合は、フルスクリーンレンダリングモードに切り替えてください。このモードでは、ターミナルのネイティブスクロールバックではなく、マウスまたは PageUp を使用して Claude Code 内でスクロールします。検索とコピーの方法については、フルスクリーンページを参照してください。
ちらつきが唯一の問題で、ターミナルが同期出力をサポートしているが自動検出されていない場合(Emacs eat など)、CLAUDE_CODE_FORCE_SYNC_OUTPUT=1を設定して、レンダラーを変更せずにちらつきを停止します。
/tui fullscreen を実行して切り替え、設定を保存します。会話はそのまま再起動され、フルスクリーン開始に失敗しない限り、今後のセッションはフルスクリーンで開始されます。Claude Code を起動する前に、CLAUDE_CODE_NO_FLICKER 環境変数を設定することもできます。
幅広いターミナルでレスポンス幅を制限する
幅広いターミナルでは、Claude のレスポンス内の各行のテキストがウィンドウの全幅に渡ります。代わりに設定した列数でテキストを折り返すには、設定でmaxProseWidth を設定してください。
大量のコンテンツを貼り付ける
800 文字以上または 3 行以上をプロンプトに貼り付けると、Claude Code は入力を[Pasted text #1 +120 lines] などのプレースホルダーに折りたたんで、入力ボックスが使用可能な状態を保ちます。送信時に完全なコンテンツを送信します。ファイル全体やログが長いなど、非常に大きな入力の場合は、コンテンツをファイルに書き込んで、貼り付けの代わりに Claude にそれを読むよう依頼してください。会話トランスクリプトが読みやすくなり、Claude が後のターンでパスによってファイルを参照できます。VS Code 統合ターミナルは、非常に大きな貼り付けから Claude Code に到達する前に文字をドロップできるため、そこではファイルを使用してください。
貼り付けに 目に見えない Unicode 文字 が含まれている場合、Claude Code は Enter キーを押すときにそれらを削除し、クリーンアップされたプロンプトを入力ボックスに戻して、別の Enter で送信できるようにします。
Claude が貼り付けたテキストをどのように処理するか
送信すると、Claude は各[Pasted text #N] プレースホルダーの背後にあるコンテンツを、他の場所から貼り付けたテキストとして表示され、入力したテキストではなく表示されます。Claude には、貼り付けには入力していない指示が含まれる可能性があり、入力したメッセージがそれを要求する場所でのみ指示に従うよう指示されます。機能フラグを取得 しないセッションでは、貼り付けはマークされません。
折りたたまれた貼り付けを削除して復元する
Ctrl+W や Ctrl+K などの単語または行ショートカットで削除するか、df] などの f/t モーションを使用した vim 削除で削除し、削除範囲が [Pasted text #N] プレースホルダー内に達する場合、Claude Code はプレースホルダー全体を削除します。復元するには、単語または行ショートカットの後に Ctrl+Y で削除を貼り付け直すか、vim 削除の後に p NORMAL モード で復元してください。
貼り付けたテキストを含むプロンプトを呼び出す
Claude Code は折りたたまれたコンテンツを各[Pasted text #N] プレースホルダーの背後に ~/.claude/paste-cache/ に保持するため、コマンド履歴 からプロンプトを呼び出して再送信すると、完全な貼り付けコンテンツが再度送信され、後のセッションでも含まれます。
保持期間スイープルール に従い、cleanupPeriodDays より古いキャッシュファイルは削除されるため、呼び出されたプロンプトは存在しなくなった貼り付けテキストを参照できます。そのようなプロンプトを送信すると、Claude Code はリテラル [Pasted text #N] 文字列を送信することはなく、不足している貼り付けの名前を示す通知を表示します。
- テキストが残っているプレーンプロンプトでは、Claude Code はプレースホルダーを削除して残りのテキストを送信します。
- シェルモード コマンドまたは
/コマンドでは、削除が実行内容を変更する可能性があり、プロンプトの削除が空のままになる場合、Claude Code は送信をキャンセルし、元のテキストを入力に保持します。プレースホルダーはまだ含まれています。プレースホルダーを削除するか、コマンドを編集してから再送信してください。
Vim キーバインディングでプロンプトを編集する
Claude Code には、プロンプト入力用の Vim スタイルの編集モードが含まれています。/config → Editor mode から有効にするか、~/.claude/settings.json で editorMode を "vim" に設定することで有効にできます。Editor mode を normal に戻すと、オフになります。
Vim モードは、NORMAL モードと VISUAL モードのモーション演算子のサブセットをサポートしており、hjkl ナビゲーション、v/V 選択、テキストオブジェクトを使用した d/c/y などが含まれます。完全なキーテーブルについては、Vim エディタモードリファレンスを参照してください。
Vim モーションはキーバインディングファイルを通じて再マップできません。jj を Escape にマップするなどの 2 キー INSERT モードシーケンスをマップするには、ユーザー設定で vimInsertModeRemaps を設定してください。
INSERT モードで Enter キーを押すと、標準的な Vim とは異なり、プロンプトが送信されます。代わりに NORMAL モードで o または O を使用するか、Ctrl+J を使用して改行を挿入してください。
関連リソース
- インタラクティブモード:完全なキーボードショートカットリファレンスと Vim キーテーブル
- キーバインディング:Enter と Shift+Enter を含む任意の Claude Code ショートカットを再マップ
- フルスクリーンレンダリング:フルスクリーンモードでのスクロール、検索、コピーの詳細
- フック ガイド:Linux と Windows の詳細な通知フック例
- トラブルシューティング:ターミナル設定外の問題の修正