全屏渲染
启用更流畅、无闪烁的渲染模式,支持鼠标操作,在长对话中保持稳定的内存使用。
全屏渲染是一个可选的研究预览功能,需要 Claude Code v2.1.89 或更高版本。在当前对话中运行 /tui fullscreen 来切换,或在 v2.1.110 之前的版本上设置 CLAUDE_CODE_NO_FLICKER=1。行为可能会根据反馈而改变。
全屏渲染是 Claude Code CLI 的一种替代渲染路径,它消除了闪烁,在长对话中保持内存使用量平稳,并添加了鼠标支持。它在终端的备用屏幕缓冲区上绘制界面,就像 vim 或 htop 一样,并且只渲染当前可见的消息。这减少了每次更新时发送到终端的数据量。
在渲染吞吐量是瓶颈的终端模拟器中,如 VS Code 集成终端、tmux 和 iTerm2,差异最为明显。如果您的终端滚动位置在 Claude 工作时跳到顶部,或者工具输出流入时屏幕闪烁,此模式可以解决这些问题。
术语"全屏"描述的是 Claude Code 如何接管终端的绘制表面,就像 vim 一样。它与最大化终端窗口无关,在任何窗口大小下都能工作。
启用全屏渲染
在任何 Claude Code 对话中运行 /tui fullscreen。CLI 会保存 tui 设置并以您的对话完整地重新启动到全屏模式,因此您可以在会话中途切换而不会丢失上下文。运行不带参数的 /tui 来打印当前活动的渲染器。
您也可以在启动 Claude Code 之前设置 CLAUDE_CODE_NO_FLICKER 环境变量:
CLAUDE_CODE_NO_FLICKER=1 claude
tui 设置和环境变量是等效的。/tui 命令会从重新启动的进程中清除 CLAUDE_CODE_NO_FLICKER,以便它写入的设置生效。
变化内容
全屏渲染改变了 CLI 绘制到终端的方式。输入框保持固定在屏幕底部,而不是在输出流入时移动。如果输入框在 Claude 工作时保持不动,则全屏渲染处于活动状态。只有可见的消息保留在渲染树中,因此无论对话长度如何,内存都保持恒定。
由于对话存在于备用屏幕缓冲区而不是终端的滚动历史中,一些事情的工作方式不同:
| 之前 | 现在 | 详情 |
|---|---|---|
Cmd+f 或 tmux 搜索来查找文本 |
Ctrl+o 进入记录模式,然后 / 来搜索或 [ 来写入滚动历史 |
搜索和查看对话 |
| 终端的原生点击拖动来选择和复制 | 应用内选择,鼠标释放时自动复制 | 使用鼠标 |
Cmd 点击来打开 URL |
点击 URL | 使用鼠标 |
如果鼠标捕获干扰您的工作流程,您可以关闭它,同时保持无闪烁渲染。
使用鼠标
全屏渲染捕获鼠标事件并在 Claude Code 内处理它们:
- 在提示输入框中点击以在您正在输入的文本中的任何位置放置光标。
- 点击折叠的工具结果以展开它并查看完整输出。再次点击以折叠。工具调用及其结果一起展开。只有有更多内容要显示的消息才可点击。
- 点击 URL 或文件路径以打开它。工具输出中的文件路径,如 Edit 或 Write 后打印的路径,在您的默认应用程序中打开。纯
http://和https://URL 在您的浏览器中打开。在大多数终端中,这替代了原生的Cmd点击或Ctrl点击,鼠标捕获会拦截这些。在 VS Code 集成终端和类似的基于 xterm.js 的终端中,继续使用Cmd点击。Claude Code 在那里遵从终端自己的链接处理程序,以避免打开链接两次。 - 点击并拖动以在对话中的任何位置选择文本。双击选择一个单词,匹配 iTerm2 的单词边界,以便文件路径作为一个单位选择。三击选择该行。
- 用鼠标滚轮滚动以在对话中移动。
选定的文本在鼠标释放时自动复制到您的剪贴板。要关闭此功能,请在 /config 中切换"选择时复制"。关闭后,按 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 |
跳到最新消息并重新启用自动跟随 |
| 鼠标滚轮 | 一次滚动几行 |
在没有专用 PgUp、PgDn、Home 或 End 键的键盘上,如 MacBook 键盘,按住 Fn 并使用箭头键:Fn+↑ 发送 PgUp,Fn+↓ 发送 PgDn,Fn+← 发送 Home,Fn+→ 发送 End。这使得 Ctrl+Fn+→ 成为跳到底部的快捷键。如果这感觉很尴尬,用鼠标滚轮滚动到底部以恢复跟随,或将 scroll:bottom 重新绑定到可达到的东西。
这些操作是可重新绑定的。请参阅滚动操作以获取完整的操作名称列表,包括没有默认绑定的半页和全页变体。
自动跟随
向上滚动会暂停自动跟随,以便新输出不会将您拉回底部。按 Ctrl+End 或滚动到底部以恢复跟随。
要完全关闭自动跟随,以便视图保持在您离开的位置,请打开 /config 并将"自动滚动"设置为关闭。禁用自动滚动后,视图永远不会自动跳到底部。权限提示和其他需要响应的对话框仍然会滚动到视图中,无论此设置如何。
鼠标滚轮滚动
鼠标滚轮滚动需要您的终端将鼠标事件转发到 Claude Code。大多数终端在应用程序请求时都会这样做。iTerm2 将其作为每个配置文件的设置:如果滚轮不起作用但 PgUp 和 PgDn 有效,请打开"设置"→"配置文件"→"终端"并打开"启用鼠标报告"。点击展开和文本选择也需要相同的设置。
如果鼠标滚轮滚动感觉很慢,您的终端可能每个物理凹口发送一个滚动事件,没有乘数。一些终端,如 Ghostty 和启用了更快滚动的 iTerm2,已经放大了滚轮事件。其他的,包括 VS Code 集成终端,每个凹口发送恰好一个事件。Claude Code 无法检测哪个。
设置 CLAUDE_CODE_SCROLL_SPEED 来乘以基础滚动距离:
export CLAUDE_CODE_SCROLL_SPEED=3
值 3 与 vim 和类似应用程序中的默认值匹配。该设置接受 1 到 20 的值。
搜索和查看对话
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 会话中启用全屏渲染。常规 tmux 在 iTerm2 内,没有 -CC,工作正常。
保持原生文本选择
鼠标捕获是最常见的摩擦点,特别是在 SSH 上或 tmux 内。当 Claude Code 捕获鼠标事件时,您的终端的原生选择时复制停止工作。您使用点击拖动进行的选择存在于 Claude Code 内,而不是在您的终端的选择缓冲区中,因此 tmux 复制模式、Kitty 提示和类似工具看不到它。
Claude Code 尝试将选择写入您的剪贴板,但它使用的路径取决于您的设置。在 tmux 内,它写入 tmux 粘贴缓冲区。在 SSH 上,它回退到 OSC 52 转义序列,一些终端默认阻止这些。iTerm2 会阻止它们,直到您打开 Settings → General → Selection → Applications in terminal may access clipboard。在 iTerm2 中运行 /terminal-setup 会为您启用此功能。Claude Code 在每次复制后打印一个 toast,告诉您它使用了哪个路径。
如果您想进行一次性的原生选择,请在点击拖动时按住您的终端的绕过修饰键: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 仓库上打开一个问题。包括您的终端模拟器名称和版本。
要关闭全屏渲染,请运行 /tui default,或如果您以这种方式启用它,请取消设置环境变量。