在 GNU 屏幕中分离后清除(1)

在 GNU 屏幕中分离后清除(1)

我在 screen 中运行 irssi,并且希望 screen 在分离后自动清空终端(回滚)。我发现屏幕有一个名为“blanker”的命令可以清除屏幕,但我没有看到在分离后自动执行此操作的方法(无论是远程还是通过 Ca d)。

答案1

当您运行时screen,它会发送(除其他外)终端描述中定义的字符串以启动/停止全屏操作。它们是tite(在 termcap 中)smcuprmcup(在 terminfo 中)。

  • 当您启动 screen 或附加到会话时,它会发送ti( smcup)。
  • 当您停止屏幕或会话的详细信息时,它会发送te( rmcup)。

根据终端描述,它们可用于在 xterm(和类似终端)之间切换备用屏幕。对于大多数终端,从备用屏幕切换回正常屏幕会使全屏应用程序看起来好像已从屏幕上清除。 (使用 xterm,您可以使用菜单来回切换:数据仍然存在,直到被清除)。

可以强制screen始终使用备用屏幕

  • 为选项指定特定值term,或者
  • 使用 termcap/terminfo 调整来修改ti/ te( smcup/ rmcup) 设置

无论哪种方式都有缺点(因为您可能screen在不同的终端类型上运行),但后者更有可能工作,因为它不会干扰使用特殊键(光标键和功能键)的能力。

如果您更喜欢screen使用类似 xterm 的终端的备用屏幕,您可以添加到您的.screenrc文件中

termcapinfo xterm*|rxvt*  te=\E[?1049l:ti=\E[?1049h:

如果你愿意不是使用备用屏幕,您可以重新定义te以清除屏幕:

termcapinfo xterm*|rxvt*  te=\E[H\E[2J:ti=\E[H\E[2J:

进一步阅读:

答案2

urxvt 也有同样的问题。找到修复方法这里:

在 .Xdefaults 中:

urxvt*termName: rxvt-256color 

在.screenrc中

term rxvt-256color

相关内容