我可以用一个例子来解释我的问题,让我们举一个命令的例子
man
,当我们在终端中运行这个命令时,它会在新窗口中打开页面,你无法看到你之前在终端中所做的事情。如何做到这一点?
我正在开发一个终端应用程序,我希望它以类似的方式工作,当我输入应用程序名称时,它应该在新页面上打开。
编辑:Vim 的示例,当我们vim
在终端中键入时打开 vim,它的界面会显示在屏幕上。我怎样才能用我正在制作的应用程序做到这一点。
答案1
您所询问的称为备用屏幕缓冲区,应用程序通过向终端发送 ESC 代码来切换到或从备用屏幕切换。
如果您的应用程序使用 ncurses 库,则会有函数来执行此操作。如果您想从 shell 脚本执行此操作,可以使用tput
发送适当的代码。
tput smcup # switch to alt screen
tput rmcup # switch back from alt screen
注意:大多数(但不是全部)终端仿真器都支持此功能。那些没有(或者禁用了它,这是某些终端仿真器中的一个选项)的人只是忽略这些代码。