- 既存レンダラーの画面のちらつき・ジャンプ現象を解消する実験的レンダラーを導入
- 会話が長くなってもメモリ・CPU使用量が一定に保たれ、ターミナル環境でマウスクリック・カーソル移動・UI要素のクリックが可能に
CLAUDE_CODE_NO_FLICKER=1 環境変数で有効化
- 従来のターミナル ANSI コードの構造的な限界により、ビューポート外の行を再描画するには画面全体を消去するコードが必要だったが、新レンダラーはビューポート全体を仮想化してこの問題を解決
- native cmd-f 検索・コピー&ペースト未対応、スクロールの物理調整が未完成などトレードオフが残っており、実験段階
- 会話内容はスクロールバックではなく代替画面バッファに存在するため、
Ctrl+O で Transcript モードに入り、less スタイル検索(/, n/N)を使用可能
- 入力欄は出力がストリーミングされている間も画面下部に固定
- マウスでカーソル位置調整・ツール結果の展開・URL/ファイルパスを開く・テキストのドラッグ選択などアプリ内マウスイベント処理をサポート
詳細は Claude Code ドキュメントの Fullscreen rendering を参照(以下添付)
フルスクリーンレンダリング
CLAUDE_CODE_NO_FLICKER=1 環境変数を設定して実行するか、~/.zshrc / ~/.bashrc に export CLAUDE_CODE_NO_FLICKER=1 を追加すると、すべてのセッションに自動適用
- Claude Code v2.1.88 以上が必要。現在はリサーチプレビュー段階で、フィードバックに応じて動作が変更される可能性あり
- 「フルスクリーン」という名称はターミナルウィンドウの最大化とは無関係で、どのウィンドウサイズでも動作
従来方式からの変更点
- 入力欄は出力がストリーミングされている間も画面下部に固定(入力欄が固定されていればフルスクリーンレンダリングが有効)
- 会話内容が代替画面バッファに存在するため、従来との違いは次のとおり:
| 従来 |
変更後 |
Cmd+F または tmux 検索でテキストを探索 |
Ctrl+O 後に / で検索、または [ でネイティブスクロールバックに書き出して Cmd+F を使用 |
| ターミナルのネイティブドラッグで選択・コピー |
アプリ内選択、マウスボタンを離すと自動コピー |
Cmd-クリックで URL を開く |
URL をクリックして開く |
マウス対応
- プロンプト入力欄をクリック: テキストの任意位置にカーソルを移動
- 折りたたまれたツール結果をクリック: 展開または折りたたみ(ツール呼び出しと結果が一緒に展開)
- URL・ファイルパスをクリック: ファイルは既定のアプリで開き、
http:///https:// URL はブラウザで開く
- VS Code 内蔵ターミナルなど xterm.js ベースのターミナルでは、リンクが二重に開かないようターミナル側のリンクハンドラーに委譲
- クリック&ドラッグ: テキスト選択(ダブルクリック: 単語選択、トリプルクリック: 行選択)
- マウスホイール: 会話をスクロール
- マウスボタンを離すと選択テキストがクリップボードへ自動コピーされる。
/config で無効化可能
スクロールショートカット
| ショートカット |
動作 |
PgUp / PgDn |
半画面ずつ上下にスクロール |
Ctrl+Home |
会話の最上部へ移動 |
Ctrl+End |
最新メッセージへ移動し、自動追従を再有効化 |
| マウスホイール |
数行ずつスクロール |
- MacBook のように専用キーがないキーボードでは
Fn+↑/↓/←/→ で PgUp/PgDn/Home/End を代用
- 上にスクロールすると**自動追従(auto-follow)**を一時停止し、
Ctrl+End または最下部までスクロールすると再開
- ショートカットは
scroll:pageUp, scroll:pageDown などのアクション名でキーバインドのカスタマイズが可能(Keybindings ドキュメント参照)
CLAUDE_CODE_SCROLL_SPEED 環境変数でマウスホイールのスクロール速度倍率を調整可能(1〜20、既定は vim 基準で 3 推奨)
会話の検索・確認(Transcript モード)
Ctrl+O で Transcript モードに入ると less スタイルの移動と検索が可能
| キー |
動作 |
/ |
検索を開く(Enter: 確定、Esc: キャンセル) |
n / N |
次/前の検索結果へ移動 |
j/k または ↑/↓ |
1 行スクロール |
g/G または Home/End |
最上部/最下部へ移動 |
Ctrl+U / Ctrl+D |
半ページスクロール |
[ |
会話全体をターミナルのネイティブスクロールバックに記録(Cmd+F 使用可) |
v |
一時ファイルに保存して $VISUAL/$EDITOR で開く |
Esc, q, Ctrl+O |
Transcript モードを終了 |
tmux 使用時の注意事項
- tmux でマウスホイールスクロールを使うには、
~/.tmux.conf に set -g mouse on を追加する必要あり
- マウスモードがないとホイールイベントは tmux に渡される。
PgUp/PgDn のキーボードスクロールは正常動作
- tmux のマウスモードがオフの状態で起動すると、Claude Code が一度だけ案内メッセージを表示
tmux -CC(iTerm2 統合モード) とは互換性なし
- このモードでは代替画面バッファとマウス追跡が正しく動作せず、ダブルクリック時にターミナル状態が壊れる可能性あり
-CC なしで iTerm2 内で通常の tmux を使う分には正常動作
ネイティブテキスト選択を維持する方法
リサーチプレビューとフィードバック
- 主要なターミナルエミュレーターでテストされているが、一般的でないターミナルや特殊な設定ではレンダリング問題が発生する可能性あり
- 問題が発生した場合は Claude Code 内で
/feedback コマンドを実行するか、claude-code GitHub リポジトリ に issue を登録(ターミナルエミュレーター名・バージョンの記載が必要)
- 無効化するには環境変数を解除するか、
CLAUDE_CODE_NO_FLICKER=0 に設定
6件のコメント
iterm -CCを使って統合モードで使っていますが……特におかしいとは感じませんでした……むしろ、少し前からレンダリング中にスクロールすると最上部に強制的にジャンプする現象があって不便だったのですが、位置が止まって new message の通知に変わるので気に入っています。いいですね……
これをすると、
shift + enterで改行できないみたいです(泣)少し
opencodeのような感じに変わってきていますね。TUIがGUIに
こういう変更はいいですね〜
まだもう少し調整が必要そうです。
カーソルを置いたまま、マウスで別の場所を選択すると自動でコピーされて、貼り付けるとカーソルがあった場所に貼り付けられるべきなのですが。
マウスで選択した場所に貼り付けられます。