it-swarm.cn

油灰,屏幕和回滚缓冲区

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

我在这里想念什么?我喜欢能够向后滚动,并且我不想使用屏幕功能来查看过去的缓冲区。鼠标上的滚轮没有钩子进入屏幕,而且我也希望不会。

谢谢!

38
chris

您还可以查看屏幕FAQ,它允许某种混合行为:

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

termcapinfo xterm ti @:te @

参考( PuTTY FAQ

PuTTY的终端仿真器始终具有以下政策:使用“备用屏幕”时,不会向回滚添加任何内容。这是因为使用备用屏幕的常用程序是诸如文本编辑器之类的程序,它们往往在同一文档中来回滚动很多;因此(a)他们将用大量无助的无序文本填充回滚,并且(b)他们包含了自己的方法,供用户滚动回他们感兴趣的位。我们通常发现此政策可以在几乎所有情况下都是正确的事情。

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

40
KnipSter

要向后滚动,请按^ACtrl-A,或者您重新定义其屏幕控制顺序后的顺序),然​​后Esc。这将使您可以上下移动光标。 PgUp/_PgDn将允许您在屏幕内上下滚动。

原因是屏幕处理回滚缓冲区的方式。屏幕始终绘制整个文本区域,并且具有自己的后缓冲区,您必须使用屏幕来控制它。这类似于使用vi或joe之类的程序,它们占用了整个文本区域并提供了自己的缓冲区:在终端仿真器中向上滚动只会产生垃圾,而在这些程序内部向上滚动则会产生预期的结果。

16
Andrew Scagnelli

那是因为屏幕是如何工作的。屏幕会动态更新整个文本区域,而不是在屏幕底部压入新行,而这又会将顶部压入回滚区域。当出现新行时,它将重新绘制整个屏幕,以防止更多数据回滚。不使用屏幕时,“少”存在相同的问题。

2
sysadmin1138

具有PuTTY回滚功能的屏幕在Solaris 10中自动运行。即使我没有.screenrc文件,它似乎也默认执行KnipSter所说的操作。这种方法的问题在于,如果分离并重新连接,那么PuTTY中没有回滚缓冲区,您必须诉诸使用Scagnelli描述的Screen的回滚。

1
Jaco Vosloo