全屏渲染是一个可选的研究预览功能,需要 Claude Code v2.1.88 或更高版本。使用
CLAUDE_CODE_NO_FLICKER=1 启用它。行为可能会根据反馈而改变。vim 或 htop 一样,并且只渲染当前可见的消息。这减少了每次更新时发送到终端的数据量。
在渲染吞吐量是瓶颈的终端模拟器中,如 VS Code 集成终端、tmux 和 iTerm2,差异最为明显。如果您的终端滚动位置在 Claude 工作时跳到顶部,或者工具输出流入时屏幕闪烁,此模式可以解决这些问题。
术语”全屏”描述的是 Claude Code 如何接管终端的绘制表面,就像
vim 一样。它与最大化终端窗口无关,在任何窗口大小下都能工作。启用全屏渲染
启动 Claude Code 时设置CLAUDE_CODE_NO_FLICKER 环境变量:
~/.zshrc 或 ~/.bashrc)中导出该变量:
变化内容
全屏渲染改变了 CLI 绘制到终端的方式。输入框保持固定在屏幕底部,而不是在输出流入时移动。如果输入框在 Claude 工作时保持不动,则全屏渲染处于活动状态。只有可见的消息保留在渲染树中,因此无论对话长度如何,内存都保持恒定。 由于对话存在于备用屏幕缓冲区而不是终端的滚动历史中,一些事情的工作方式不同:
如果鼠标捕获干扰您的工作流程,您可以关闭它,同时保持无闪烁渲染。
使用鼠标
全屏渲染捕获鼠标事件并在 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 会复制而不是取消。
滚动对话
全屏渲染在应用内处理滚动。使用这些快捷键来导航:| 快捷键 | 操作 |
|---|---|
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 或滚动到底部以恢复跟随。
这些操作是可重新绑定的。请参阅快捷键来自定义它们。操作名称是 scroll:pageUp、scroll:pageDown、scroll:top 和 scroll:bottom。没有默认绑定的其他操作包括 scroll:lineUp、scroll:lineDown、scroll:halfPageUp、scroll:halfPageDown、scroll:fullPageUp 和 scroll:fullPageDown。
调整滚轮滚动速度
如果鼠标滚轮滚动感觉很慢,您的终端可能每个物理凹口发送一个滚动事件,没有乘数。一些终端,如 Ghostty 和启用了更快滚动的 iTerm2,已经放大了滚轮事件。其他的,包括 VS Code 集成终端,每个凹口发送恰好一个事件。Claude Code 无法检测哪个。 设置CLAUDE_CODE_SCROLL_SPEED 来乘以基础滚动距离:
3 与 vim 和类似应用程序中的默认值匹配。该设置接受 1 到 20 的值。
搜索和查看对话
按Ctrl+o 进入记录模式。启用全屏渲染后,记录模式获得 less 风格的导航和搜索:
| 键 | 操作 |
|---|---|
/ | 打开搜索。输入以查找匹配项,Enter 接受,Esc 取消并恢复您的滚动位置 |
n / N | 跳到下一个或上一个匹配项。在您关闭搜索栏后工作 |
j / k 或 ↑ / ↓ | 向上或向下滚动一行 |
g / G 或 Home / End | 跳到顶部或底部 |
Ctrl+u / Ctrl+d | 滚动半页 |
Ctrl+b / Ctrl+f 或 Space / b | 滚动整页 |
Esc、q 或 Ctrl+o | 退出记录模式 |
Cmd+f 和 tmux 搜索看不到对话,因为它存在于备用屏幕缓冲区中,而不是原生滚动历史中。要将内容交还给您的终端,请先按 Ctrl+o 进入记录模式,然后:
[:将完整对话写入您的终端的原生滚动历史缓冲区,所有工具输出都已展开。对话现在是您的终端中的普通文本,因此Cmd+f、tmux 复制模式和任何其他原生工具都可以搜索或选择它。长会话可能会在此过程中暂停片刻。这会持续到您使用Esc或q退出记录模式,这会将您返回到全屏渲染。下一个Ctrl+o重新开始。v:将对话写入临时文件并在$VISUAL或$EDITOR中打开它。
Esc、q 或 Ctrl+o 返回到提示。
与 tmux 一起使用
全屏渲染在 tmux 内工作,有两个注意事项。 鼠标滚轮滚动需要 tmux 的鼠标模式。如果您的~/.tmux.conf 还没有启用它,请添加这一行并重新加载您的配置:
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 转义序列,一些终端默认阻止这些。Claude Code 在每次复制后打印一个 toast,告诉您它使用了哪个路径。 如果您依赖终端的原生选择,请设置CLAUDE_CODE_DISABLE_MOUSE=1 以选择退出鼠标捕获,同时保持无闪烁渲染和平稳内存:
PgUp、PgDn、Ctrl+Home 和 Ctrl+End 的键盘滚动仍然有效,您的终端原生处理选择。您会失去点击定位光标、点击展开工具输出、URL 点击和 Claude Code 内的滚轮滚动。
研究预览
全屏渲染是一个研究预览功能。它已在常见的终端模拟器上进行了测试,但您可能会在不太常见的终端或不寻常的配置上遇到渲染问题。 如果您遇到问题,请在 Claude Code 内运行/feedback 来报告它,或在 claude-code GitHub 仓库上打开一个问题。包括您的终端模拟器名称和版本。
要关闭全屏渲染,请取消设置环境变量或设置 CLAUDE_CODE_NO_FLICKER=0。