全屏渲染是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)上绘制界面(类似 vim 或 htop),并且只渲染当前可见的消息,减少了每次更新发送到终端的数据量。
在渲染吞吐量是瓶颈的终端模拟器中效果最明显,例如 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+Home 和 Shift+End 扩展到当前行的开始或结束。
滚动对话
全屏渲染在应用内处理滚动。使用以下快捷键导航:
| 快捷键 | 操作 |
|---|---|
PgUp / PgDn |
向上/向下滚动半屏 |
Ctrl+Home |
跳到对话开头 |
Ctrl+End |
跳到最新消息并重新启用自动跟随 |
| 鼠标滚轮 | 每次滚动几行 |
在像 MacBook 键盘这样没有独立 PgUp、PgDn、Home、End 键的键盘上,按住 Fn 加方向键:Fn+↑ 发送 PgUp,Fn+↓ 发送 PgDn,Fn+← 发送 Home,Fn+→ 发送 End。这样 Ctrl+Fn+→ 就是跳到底部的快捷键。如果不顺手,可以用鼠标滚轮滚到底部来恢复跟随,或者将 scroll:bottom 绑定到更顺手的键位上。
这些操作是可绑定(rebindable)的。参见 滚动操作 获得完整操作名列表,包括没有默认绑定的半页和整页变体。
自动跟随
向上滚动会暂停自动跟随,新输出不会把你拉回底部。按 Ctrl+End 或滚动到底部以恢复跟随。
要完全关闭自动跟随,使视图停留在你离开的位置,打开 /config 并将“自动滚动”(Auto-scroll)设为关闭。自动滚动禁用后,视图永远不会自行跳到底部。但需要响应的权限提示和其他对话框仍会滚动到视图中,无论此设置如何。
鼠标滚轮滚动
鼠标滚轮滚动需要终端将鼠标事件转发给 Claude Code。大多数终端在应用程序请求时都会这样做。iTerm2 将其作为每个配置文件设置:如果滚轮不起作用但 PgUp 和 PgDn 工作,请打开 设置 → 配置文件 → 终端 并启用“启用鼠标报告”(Enable mouse reporting)。同样的设置也是点击展开和文本选择工作的必要条件。
如果鼠标滚轮滚动感觉缓慢,你的终端可能每个物理滚轮只发送一个滚动事件,没有倍率。一些终端(如 Ghostty 和启用了更快滚动的 iTerm2)已经放大了滚轮事件。其他终端(包括 VS Code 内置终端)每个滚轮只发送一个事件。Claude Code 无法检测到这一点。
设置 CLAUDE_CODE_SCROLL_SPEED 来乘以基本滚动距离:
export CLAUDE_CODE_SCROLL_SPEED=3
值 3 与 vim 及类似应用的默认值一致。该设置接受 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 / G 或 Home / End |
跳转到顶部或底部 |
Ctrl+u / Ctrl+d |
滚动半页 |
Ctrl+b / Ctrl+f 或 Space / b |
滚动整页 |
Ctrl+o, Esc, 或 q |
退出文字稿模式并返回提示 |
你的终端的 Cmd+f 和 tmux 搜索看不到对话,因为对话在备用屏幕缓冲区中,不在原生滚动缓存区中。要将内容还回终端,先按 Ctrl+o 进入文字稿模式,然后:
[:将完整对话(所有工具输出已展开)写入终端的原生滚动缓存区。对话现在成为终端中的普通文本,因此Cmd+f、tmux 复制模式和任何原生工具都可以搜索或选择它。长会话可能需要暂停片刻才能完成。这持续到你按Esc或q退出文字稿模式(返回到全屏渲染)。下一次按Ctrl+o将从头开始。v:将对话写入临时文件并在$VISUAL或$EDITOR中打开。
按 Esc 或 q 返回到提示。
清除对话
在两秒内按 Ctrl+L 两次,会运行 /clear 并开始新对话。第一次按会重绘屏幕并显示提示;第二次按会清除对话。在 macOS 上,双击 Cmd+K 也会运行 /clear。
与 tmux 一起使用
全屏渲染在 tmux 内工作,但有三个注意事项。
鼠标滚轮滚动需要 tmux 的鼠标模式。如果你的 ~/.tmux.conf 尚未启用,请添加此行并重新加载配置:
set -g mouse on
没有鼠标模式时,滚轮事件会发送给 tmux 而不是 Claude Code。使用 PgUp 和 PgDn 的键盘滚动不管怎样都能工作。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
禁用鼠标捕获后,键盘滚动(PgUp、PgDn、Ctrl+Home、Ctrl+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),重绘时可能仍会出现一些闪烁。