Claude Code官方文档全屏渲染fullscreen

Claude Code 全屏渲染 - 流畅无闪烁 + 鼠标支持

启用更流畅、无闪烁的渲染模式,支持鼠标操作,在长对话中保持稳定的内存使用。

· 阅读约 13 分钟

全屏渲染

启用更流畅、无闪烁的渲染模式,支持鼠标操作,在长对话中保持稳定的内存使用。

ℹ️ 全屏渲染是一个可选的研究预览功能,需要 Claude Code v2.1.89 或更高版本。在当前对话中运行 /tui fullscreen 来切换,或在 v2.1.110 之前的版本上设置 CLAUDE_CODE_NO_FLICKER=1。行为可能会根据反馈而改变。

全屏渲染是 Claude Code CLI 的一种替代渲染路径,它消除了闪烁,在长对话中保持内存使用量平稳,并添加了鼠标支持。它在终端的备用屏幕缓冲区上绘制界面,就像 vimhtop 一样,并且只渲染当前可见的消息。这减少了每次更新时发送到终端的数据量。

在渲染吞吐量是瓶颈的终端模拟器中,如 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+HomeShift+End 扩展到当前行的开始或结束。

滚动对话

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

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

在没有专用 PgUpPgDnHomeEnd 键的键盘上,如 MacBook 键盘,按住 Fn 并使用箭头键:Fn+↑ 发送 PgUpFn+↓ 发送 PgDnFn+← 发送 HomeFn+→ 发送 End。这使得 Ctrl+Fn+→ 成为跳到底部的快捷键。如果这感觉很尴尬,用鼠标滚轮滚动到底部以恢复跟随,或将 scroll:bottom 重新绑定到可达到的东西。

这些操作是可重新绑定的。请参阅滚动操作以获取完整的操作名称列表,包括没有默认绑定的半页和全页变体。

自动跟随

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

要完全关闭自动跟随,以便视图保持在您离开的位置,请打开 /config 并将自动滚动设置为关闭。禁用自动滚动后,视图永远不会自动跳到底部。权限提示和其他需要响应的对话框仍然会滚动到视图中,无论此设置如何。

鼠标滚轮滚动

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

如果鼠标滚轮滚动感觉很慢,您的终端可能每个物理凹口发送一个滚动事件,没有乘数。一些终端,如 Ghostty 和启用了更快滚动的 iTerm2,已经放大了滚轮事件。其他的,包括 VS Code 集成终端,每个凹口发送恰好一个事件。Claude Code 无法检测哪个。

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

export CLAUDE_CODE_SCROLL_SPEED=3

3vim 和类似应用程序中的默认值匹配。该设置接受 1 到 20 的值。

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+oEscq退出记录模式并返回到提示

您的终端的 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 会话中启用全屏渲染。常规 tmux 在 iTerm2 内,没有 -CC,工作正常。

tmux 不支持同步输出,因此在重绘期间您可能会看到比直接在终端中运行 Claude Code 时更多的闪烁。如果闪烁很明显,特别是在 SSH 上,请在 tmux 外的自己的终端标签页中运行 Claude Code。

保持原生文本选择

鼠标捕获是最常见的摩擦点,特别是在 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

禁用鼠标捕获后,使用 PgUpPgDnCtrl+HomeCtrl+End 的键盘滚动仍然有效,您的终端原生处理选择。您会失去点击定位光标、点击展开工具输出、URL 点击和 Claude Code 内的滚轮滚动。

研究预览

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

如果您遇到问题,请在 Claude Code 内运行 /feedback 来报告它,或在 claude-code GitHub 仓库上打开一个问题。包括您的终端模拟器名称和版本。

要关闭全屏渲染,请运行 /tui default,或如果您以这种方式启用了 CLAUDE_CODE_NO_FLICKER,请取消设置它。要强制使用经典渲染器而不管保存的 tui 设置,请设置 CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1。经典渲染器将对话保留在您的终端的原生滚动缓冲区中,因此 Cmd+f 和 tmux 复制模式可以照常工作。


本文翻译自 Anthropic Claude Code 官方文档,最近一次同步:2025-05-01。