Terminal 诅咒如何保存屏幕内容?
启动(n)curses程序时,它将从终端仿真器中删除滚动条,清除屏幕,滚动日志(历史记录)也将消失。退出程序时,屏幕内容重新出现,滚动条返回,滚动缓冲区返回 这是怎么回事?我已经研究了所有的ANSI转义码,我看不到任何东西可以做这样的事情。这背后的技术是什么?这项技术被称为。终端仿真器提供两种模式:主模式和备用模式。备用屏幕缓冲区没有向后滚动,当您在这些缓冲区之间切换时,其中的内容将保留。要在它们之间切换,请使用Terminal 诅咒如何保存屏幕内容?,terminal,ncurses,curses,xterm,ansi-escape,Terminal,Ncurses,Curses,Xterm,Ansi Escape,启动(n)curses程序时,它将从终端仿真器中删除滚动条,清除屏幕,滚动日志(历史记录)也将消失。退出程序时,屏幕内容重新出现,滚动条返回,滚动缓冲区返回 这是怎么回事?我已经研究了所有的ANSI转义码,我看不到任何东西可以做这样的事情。这背后的技术是什么?这项技术被称为。终端仿真器提供两种模式:主模式和备用模式。备用屏幕缓冲区没有向后滚动,当您在这些缓冲区之间切换时,其中的内容将保留。要在它们之间切换,请使用smcup和rmcupANSI转义序列。以二进制形式,它们是: $ tput smc
smcup
和rmcup
ANSI转义序列。以二进制形式,它们是:
$ tput smcup|hexdump -C
00000000 1b 5b 3f 31 30 34 39 68 |.[?1049h|
$ tput rmcup|hexdump -C
00000000 1b 5b 3f 31 30 34 39 6c |.[?1049l|
xterm常见问题解答中详细讨论了这一点 这样的课程不能做到这一点。根据终端说明中提供的转义序列,这由终端完成 该行为来自备用屏幕缓冲区,该缓冲区是在X10R4(1986年底)中随xterm引入的。xterm维护两个缓冲区:
- 正常屏幕缓冲区(您在VT100窗口中看到的),包括回滚区域,以及
- 备用屏幕缓冲区(不包括回滚区域)
ti
和te
(对应于terminfosmcup
和rmcup
)。从技术上讲,这些名称指的是光标寻址模式,但没有人在意(太多)
通过在运行时删除termcapti
和te
功能(从termcap
环境变量),可以抑制原始xterm的备用屏幕功能,但这种方法无法与使用文件的terminfo一起使用。自1997年以来,xterm实现了一组新的转义序列,可以被xterm忽略。其他一些程序允许抑制该特征,但通常不允许