我在 screen 中运行 irssi,并且希望 screen 在分离后自动清空终端(回滚)。我发现屏幕有一个名为“blanker”的命令可以清除屏幕,但我没有看到在分离后自动执行此操作的方法(无论是远程还是通过 Ca d)。
答案1
当您运行时screen
,它会发送(除其他外)终端描述中定义的字符串以启动/停止全屏操作。它们是ti
和te
(在 termcap 中)smcup
和rmcup
(在 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:
进一步阅读:
- 16.3 termcap命令(GNU 屏幕手册)
- 为什么运行 vi 时屏幕不清除?(xterm 常见问题解答)
答案2
urxvt 也有同样的问题。找到修复方法这里:
在 .Xdefaults 中:
urxvt*termName: rxvt-256color
在.screenrc中
term rxvt-256color