全屏渲染是Claude Code CLI的可选渲染模式(研究预览),通过环境变量 CLAUDE_CODE_NO_FLICKER=1/tui fullscreen 命令启用。它使用终端备用屏幕缓冲区,只渲染可见消息,消除闪烁且内存占用恒定,并增加鼠标支持。注意:在 iTerm2 tmux 集成模式(tmux -CC)中不兼容;鼠标捕获可通过 CLAUDE_CODE_DISABLE_MOUSE=1 关闭。

Claude Code 全屏渲染配置:无闪烁、鼠标支持、搜索模式

启用更平滑、无闪烁的渲染模式,带鼠标支持,在长会话中内存占用稳定。

全屏渲染是可选的研究预览功能,需要 Claude Code v2.1.89 或更高版本。在当前会话中运行 /tui fullscreen 切换到全屏模式;在 v2.1.110 之前的版本上可以设置 CLAUDE_CODE_NO_FLICKER=1 来启用。行为可能根据反馈调整。

全屏渲染是 Claude Code CLI 的备选渲染路径,它消除闪烁、在长会话中保持内存占用持平,并增加鼠标支持。它在终端的备用屏幕缓冲区(alternate screen buffer)上绘制界面(类似 vimhtop),并且只渲染当前可见的消息,减少了每次更新发送到终端的数据量。

在渲染吞吐量是瓶颈的终端模拟器中效果最明显,例如 VS Code 内置终端、tmux 和 iTerm2。如果你的终端滚动位置在 Claude 工作时跳到顶部,或者屏幕在工具输出流入时闪烁,这种模式可以解决这些问题。

“全屏”描述的是 Claude Code 接管终端绘制表面的方式(类似 vim),与最大化终端窗口无关,可以在任何窗口大小下工作。

启用全屏渲染

在任意 Claude Code 会话中运行 /tui fullscreen。CLI 会保存 tui 设置 并重新启动成全屏模式,会话内容保持不变——你可以在会话中间切换而不会丢失上下文。运行不带参数的 /tui 会打印当前活动的渲染器。

你也可以在启动 Claude Code 前设置环境变量:

CLAUDE_CODE_NO_FLICKER=1 claude

tui 设置和该环境变量等价。/tui 命令会在重新启动的进程中清除 CLAUDE_CODE_NO_FLICKER,使得它写入的设置生效。

变化对比

全屏渲染改变了 CLI 绘制终端的方式。输入框固定在屏幕底部,不会随着输出流入而移动。如果 Claude 工作时输入保持不动,说明全屏渲染已激活。只有可见的消息保留在渲染树中,所以内存占用始终恒定,与对话长度无关。

因为对话存放在备用屏幕缓冲区而非终端的滚动缓存区(scrollback),一些操作的工作方式发生了变化:

之前 现在 详情
Cmd+f 或 tmux 搜索查找文本 Ctrl+o 进入文字稿模式,然后 / 搜索或 [ 写入滚动缓存区 搜索和回顾对话
终端的原生点击拖拽选择和复制 应用内选择,鼠标松开时自动复制 使用鼠标
Cmd-click 打开 URL 直接点击 URL 使用鼠标

如果鼠标捕获干扰了你的工作流,你可以关闭它同时保留无闪烁渲染。

使用鼠标

全屏渲染捕获鼠标事件并在 Claude Code 内部处理:

  • 点击提示输入框:将光标定位到正在输入文本的任意位置。
  • 点击 / 命令或 @ 文件列表中的建议:接受该建议。悬停时行高亮。
  • 点击折叠的工具结果:展开查看完整输出。再次点击折叠。工具调用和结果一起展开。只有有更多内容可显示的消息才是可点击的。
  • 点击 URL 或文件路径:在默认应用程序中打开。工具输出中的文件路径(如 Edit 或 Write 工具打印的)在默认应用程序中打开;普通的 http://https:// URL 在浏览器中打开。大多数终端中,这会取代原生的 Cmd-click 或 Ctrl-click(因为鼠标捕获会拦截它们)。在 VS Code 内置终端和类似的 xterm.js 终端中,请继续使用 Cmd-click——Claude Code 会让终端自行处理链接,以避免重复打开。
  • 点击并拖拽:在对话中任意位置选择文本。双击选中单词,与 iTerm2 的单词边界一致(文件路径作为一个单元选中)。三击选中行。
  • 鼠标滚轮滚动:在对话中移动。

选中文本会在鼠标松开时自动复制到剪贴板。要关闭此功能,在 /config 中切换“选中时复制”(Copy on select)。关闭后按 Ctrl+Shift+c 手动复制。在支持 kitty 键盘协议的终端(kitty、WezTerm、Ghostty、iTerm2)上,Cmd+c 也可用。如果有选中内容,Ctrl+c 会复制而不是取消。

选中内容激活时,按住 Shift 并按方向键从键盘扩展选择。Shift+↑Shift+↓ 在选择到达顶部或底部边缘时滚动视口。Shift+HomeShift+End 扩展到当前行的开始或结束。

滚动对话

全屏渲染在应用内处理滚动。使用以下快捷键导航:

快捷键 操作
PgUp / PgDn 向上/向下滚动半屏
Ctrl+Home 跳到对话开头
Ctrl+End 跳到最新消息并重新启用自动跟随
鼠标滚轮 每次滚动几行

在像 MacBook 键盘这样没有独立 PgUpPgDnHomeEnd 键的键盘上,按住 Fn 加方向键:Fn+↑ 发送 PgUpFn+↓ 发送 PgDnFn+← 发送 HomeFn+→ 发送 End。这样 Ctrl+Fn+→ 就是跳到底部的快捷键。如果不顺手,可以用鼠标滚轮滚到底部来恢复跟随,或者将 scroll:bottom 绑定到更顺手的键位上。

这些操作是可绑定(rebindable)的。参见 滚动操作 获得完整操作名列表,包括没有默认绑定的半页和整页变体。

自动跟随

向上滚动会暂停自动跟随,新输出不会把你拉回底部。按 Ctrl+End 或滚动到底部以恢复跟随。

要完全关闭自动跟随,使视图停留在你离开的位置,打开 /config 并将“自动滚动”(Auto-scroll)设为关闭。自动滚动禁用后,视图永远不会自行跳到底部。但需要响应的权限提示和其他对话框仍会滚动到视图中,无论此设置如何。

鼠标滚轮滚动

鼠标滚轮滚动需要终端将鼠标事件转发给 Claude Code。大多数终端在应用程序请求时都会这样做。iTerm2 将其作为每个配置文件设置:如果滚轮不起作用但 PgUpPgDn 工作,请打开 设置 → 配置文件 → 终端 并启用“启用鼠标报告”(Enable mouse reporting)。同样的设置也是点击展开和文本选择工作的必要条件。

如果鼠标滚轮滚动感觉缓慢,你的终端可能每个物理滚轮只发送一个滚动事件,没有倍率。一些终端(如 Ghostty 和启用了更快滚动的 iTerm2)已经放大了滚轮事件。其他终端(包括 VS Code 内置终端)每个滚轮只发送一个事件。Claude Code 无法检测到这一点。

设置 CLAUDE_CODE_SCROLL_SPEED 来乘以基本滚动距离:

export CLAUDE_CODE_SCROLL_SPEED=3

3vim 及类似应用的默认值一致。该设置接受 1 到 20 之间的值。

要交互式调整滚动速度,运行 /scroll-speed。对话框显示一个标尺,你可以在它打开时滚动,从而立即感受到变化。按 调整,按 r 重置为自动检测的默认值,按 Enter 保存。该命令写入与 CLAUDE_CODE_SCROLL_SPEED 环境变量相同的值,持久化到 ~/.claude/settings.json。该命令在 JetBrains IDE 终端中不可用。

在 JetBrains IDE 终端中滚动

在 JetBrains IDE 终端中,Claude Code 使用自己的滚动处理,并忽略 CLAUDE_CODE_SCROLL_SPEED。该终端发送滚动事件的频率比其他模拟器高得多,因此在其他地方调整好的倍率在这里会过头。

在 2025.2 版本中,终端还存在滚轮错误,会产生伪方向键和反向方向事件。Claude Code 在运行时检测到这些问题并自动缓解,因此触控板和鼠标滚轮滚动无需配置即可使用。为获得最佳滚动体验,请升级到 2025.3 或更高版本。Claude Code 在第一次滚动时如果检测到错误会显示提示。

搜索和回顾对话

Ctrl+o 在正常提示和文字稿模式之间切换。要获得更安静的视图(只显示上一个提示、工具调用的单行摘要含编辑 diffstats,以及最终响应),运行 /focus。该设置跨会话持久化。再次运行 /focus 关闭它。

文字稿模式获得 less 风格的导航和搜索:

操作
/ 打开搜索。输入以查找匹配,Enter 接受,Esc 取消并恢复滚动位置
n / N 跳转到下一个或上一个匹配。关闭搜索栏后仍可使用
j / k / 滚动一行
g / GHome / End 跳转到顶部或底部
Ctrl+u / Ctrl+d 滚动半页
Ctrl+b / Ctrl+fSpace / b 滚动整页
Ctrl+o, Esc, 或 q 退出文字稿模式并返回提示

你的终端的 Cmd+f 和 tmux 搜索看不到对话,因为对话在备用屏幕缓冲区中,不在原生滚动缓存区中。要将内容还回终端,先按 Ctrl+o 进入文字稿模式,然后:

  • [:将完整对话(所有工具输出已展开)写入终端的原生滚动缓存区。对话现在成为终端中的普通文本,因此 Cmd+f、tmux 复制模式和任何原生工具都可以搜索或选择它。长会话可能需要暂停片刻才能完成。这持续到你按 Escq 退出文字稿模式(返回到全屏渲染)。下一次按 Ctrl+o 将从头开始。
  • v:将对话写入临时文件并在 $VISUAL$EDITOR 中打开。

Escq 返回到提示。

清除对话

在两秒内按 Ctrl+L 两次,会运行 /clear 并开始新对话。第一次按会重绘屏幕并显示提示;第二次按会清除对话。在 macOS 上,双击 Cmd+K 也会运行 /clear

与 tmux 一起使用

全屏渲染在 tmux 内工作,但有三个注意事项。

鼠标滚轮滚动需要 tmux 的鼠标模式。如果你的 ~/.tmux.conf 尚未启用,请添加此行并重新加载配置:

set -g mouse on

没有鼠标模式时,滚轮事件会发送给 tmux 而不是 Claude Code。使用 PgUpPgDn 的键盘滚动不管怎样都能工作。Claude Code 在启动时如果检测到 tmux 鼠标模式关闭,会打印一次性提示。

全屏渲染与 iTerm2 的 tmux 集成模式(使用 tmux -CC 进入的模式)不兼容。在集成模式下,iTerm2 将每个 tmux 窗格渲染为原生分屏,而不是让 tmux 绘制到终端。备用屏幕缓冲区和鼠标跟踪无法正常工作:鼠标滚轮无效,双击可能损坏终端状态。不要在 tmux -CC 会话中启用全屏渲染。iTerm2 中的常规 tmux(不带 -CC)可以正常工作。

tmux 不支持同步输出(synchronized output),因此重新绘制时的闪烁可能比直接在终端中运行 Claude Code 时更多。如果闪烁明显,尤其是在 SSH 上,请在 tmux 之外单独的终端标签页中运行 Claude Code。

保留原生文本选择

鼠标捕获是最常见的摩擦点,尤其是在 SSH 上或 tmux 内部。当 Claude Code 捕获鼠标事件时,你终端的原生点击即选(copy-on-select)会停止工作。你用点击拖拽所做的选择存在于 Claude Code 内部,而不是终端的选中缓冲区中,因此 tmux 复制模式、Kitty 提示(hints)等工具看不到它。

Claude Code 尝试将选中内容写入剪贴板,但路径取决于你的设置。在 tmux 内部,它会写入 tmux 粘贴缓冲区。通过 SSH 时,它会退回到 OSC 52 转义序列,一些终端默认会阻止这些序列。iTerm2 阻止它们,直到你打开 设置 → 常规 → 选择 → 应用程序在终端中可访问剪贴板(Applications in terminal may access clipboard)。在 iTerm2 中运行 /terminal-setup 会为你启用它。Claude Code 在每次复制后显示一个 toast,告诉你使用了哪个路径。

对于一次性原生选择,在点击拖拽时按住终端的绕过修饰键(bypass modifier):iTerm2 中按住 Option,大多数 Linux 和 Windows 终端中按住 Shift。该修饰键告诉终端自己处理选择,而不是将鼠标事件转发给 Claude Code,因此 Cmd+C 和终端的其他复制快捷键可以对其工作。

如果你一直依赖原生选择,设置 CLAUDE_CODE_DISABLE_MOUSE=1 来退出鼠标捕获,同时保留无闪烁渲染和恒定内存:

CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

禁用鼠标捕获后,键盘滚动(PgUpPgDnCtrl+HomeCtrl+End)仍然有效,终端原生处理选择。你将失去点击定位光标、点击展开工具输出、URL 点击以及在 Claude Code 内部鼠标滚轮滚动的功能。

研究预览

全屏渲染是一个研究预览功能。它已在常见终端模拟器上测试,但在不常见的终端或特殊配置上可能会遇到渲染问题。

如果遇到问题,在 Claude Code 中运行 /feedback 报告,或在 claude-code GitHub 仓库 上提交 issue。请包含你使用的终端模拟器名称和版本。

要关闭全屏渲染,运行 /tui default,或者如果你是通过 CLAUDE_CODE_NO_FLICKER 启用的,则取消设置该变量。要强制使用经典渲染器,无论已保存的 tui 设置如何,都设置 CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1。经典渲染器将对话保留在终端的原生滚动缓存区中,因此 Cmd+f 和 tmux 复制模式照常工作。

常见问题

启用全屏渲染后 Cmd+f 为什么搜索不到对话?

全屏渲染使用终端的备用屏幕缓冲区,对话不在终端的原生滚动缓存区(scrollback)中,因此 Cmd+f 看不到。用 Ctrl+o 进入文字稿模式,然后按 / 搜索;或者按 [ 把对话写入原生滚动缓存区后,再使用 Cmd+f 搜索。

在 VS Code 内置终端中鼠标点击 URL 没有反应怎么办?

VS Code 内置终端基于 xterm.js,Claude Code 会检测到它并让终端自行处理链接,以避免重复打开。因此请继续使用 Cmd-click(或 Ctrl-click)打开 URL。如果你在其他终端中希望直接点击 URL 而不是组合键,请检查是否有鼠标捕获冲突。

全屏渲染会影响性能吗?

实际上会改善渲染性能。它只渲染可见消息,减少了每次更新的数据量;在渲染吞吐量是瓶颈的终端(VS Code 内置终端、tmux、iTerm2)中效果最明显。内存占用在长会话中保持恒定,不会因为对话增长而增加。但如果你的终端不支持同步输出(如 tmux),重绘时可能仍会出现一些闪烁。