同步输出
频繁更新大块可见屏幕区域的命令行程序,在尚未启用 同步输出的情况下,可能会在 Ghostty 这类快速终端中 出现画面撕裂。
在某些系统上,频繁更新大块可见屏幕区域 的命令行程序在使用 Ghostty 时可能反复闪烁 或出现严重的画面撕裂,而其他终端模拟器则不会出现这种情况。 这通常不是 Ghostty 的 bug,而是这些程序自身的 bug。
背后的原因通常是 Ghostty 渲染得太快, 而重绘屏幕的这些程序更新屏幕单元格的速度不够快,跟不上渲染器——因此出现撕裂。
在不牺牲性能的前提下,Ghostty 在这里能做的并不多。因此我们 强烈建议受影响程序的用户向上游开发者提交 issue, 并附上本页 面向开发者 一节的链接, 让他们知道如何修复底层问题。
已知受此问题影响的程序包括:
如果你是遇到此问题的 CLI 或 TUI 应用开发者,则需要实现 [同步输出] 协议,它会在屏幕完全更新、可以 安全渲染下一帧时通知 Ghostty
不过,作为最佳实践,我们还建议只更新 确实需要更新的单元格,并且避免 在更新新单元格之前擦除整行或整个活动屏幕。 转而你可以使用 [光标位置 (CUP)] 将光标重置到需要更新的部分, 更新那些单元格,然后用 [擦除行 (EL)] 擦除该行的其余部分。这不仅能 缓解不支持同步输出协议的终端上出现的画面撕裂, 还能通过减少无谓的更新和发送给终端的数据量 大幅提升性能。