如何保存/恢复终端输出

如何保存/恢复终端输出

某些程序(例如 vim/nano/nload)能够使用整个终端来显示其内容,并且在退出时,将恢复之前的终端输出。他们如何实施这个恢复过程?

答案1

他们如何实施这个恢复过程?

他们没有这么做。这不属于他们实施的范围。

这就是所谓的备用屏幕缓冲区被切换进和切换出。它是在终端(或终端仿真器程序)本身中实现的。终端响应此类 TUI 程序发出的控制序列。 TUI 程序控制什么时候这种情况发生了,但是实施什么发生的情况完全在航站楼内。事实上,TUI 程序甚至没有与正在发生的事情相同的模型。对他们来说,他们正在切换进入和退出“光标寻址模式”。

并非所有终端和终端仿真程序都有备用屏幕缓冲区。例如:Linux和BSD内核中内置的提供内核虚拟终端的终端仿真器程序通常不具备此功能。

在此类终端上,没有控制序列。因此,终端类型的 termcap/terminfo 数据库记录将不具有此类控制序列;切换到“光标寻址模式”或从“光标寻址模式”切换会覆盖当前屏幕内容没有保存并恢复它。

vim、nano 等等对此一无所知。他们没有做任何不同的事情。它们不是执行该功能的东西。他们只是发出 termcap/terminfo 告诉他们将进入和退出“光标寻址模式”的控制序列。对于某些具有该机制的终端,“光标寻址模式”也意味着使用备用屏幕缓冲区。对于一些人来说,还没有,事实并非如此。

进一步阅读

相关内容