腻子和屏幕和回滚缓冲区

腻子和屏幕和回滚缓冲区

当我在 Putty 会话中使用屏幕时,我似乎无法使用 Putty 的回滚缓冲区来查看刚刚从屏幕上滚动的内容。相反,我只能看到在运行屏幕之前 Putty 会话中发生的事情。

我在这里遗漏了什么?我喜欢能够向后滚动,并且我不想使用屏幕功能查看过去的缓冲区;我的鼠标上的滚轮没有挂钩到屏幕上,而且我也不指望它会有。

谢谢!

答案1

您还可以查看允许某种混合行为的屏幕常见问题解答:

摘要:将以下行添加到您的 .screenrc 文件中:

termcapinfo xterm ti@:te@

参考 (Putty 常见问题解答

PuTTY 的终端仿真器始终遵循这样的策略:在使用“备用屏幕”时,不会向回滚添加任何内容。这是因为通常使用备用屏幕的程序是文本编辑器之类的程序,它们往往会在同一文档中来回滚动;因此 (a) 它们会用大量无用的无序文本填满回滚,并且 (b) 它们包含自己的方法,让用户回滚到他们感兴趣的部分。我们通常发现,这种策略在几乎所有情况下都能起到正确的作用。

不幸的是,screen 是一个例外:它使用备用屏幕,但让 PuTTY 的回滚继续工作通常仍然很有帮助。最简单的解决方案是转到“功能”控制面板并勾选“禁用切换到备用终端屏幕”。(有关更多详细信息,请参阅第 4.6.4 节。)或者,您可以告诉 screen 本身不要使用备用屏幕:screen FAQ 建议将行“termcapinfo xterm ti@:te@”添加到您的 .screenrc 文件。

答案2

要向后滚动,请按^ACtrl-A,或您重新映射的屏幕控制序列的任何内容),然后按Esc。这将允许您上下移动光标。 PgUp/PgDn将允许您在屏幕内上下滚动。

原因在于 screen 处理回滚缓冲区的方式。Screen 始终绘制整个文本区域,并具有自己的后缓冲区,您必须使用 screen 进行控制。这类似于使用 vi 或 joe 等程序,它们占用整个文本区域并提供自己的缓冲区:在终端仿真器中向上滚动只会显示垃圾,但在这些程序中向上滚动会显示您想要的结果。

答案3

这是因为 screen 的工作方式。Screen 会动态更新整个文本区域,而不是在屏幕底部推送新行,从而将顶部行推入回滚区域。当出现新行时,它会重新绘制整个屏幕,从而防止更多数据进入回滚区域。不使用 screen 时,'less' 也存在同样的问题。

答案4

在 Solaris 10 中,带有 Putty 回滚功能的 Screen 会自动运行。尽管我没有 .screenrc 文件,但它似乎默认按照 KnipSter 所说的那样运行。这种方法的问题是,如果您分离并重新连接,则 Putty 中没有回滚缓冲区,您必须求助于使用 Scagnelli 描述的 Screen 的回滚。

相关内容