我正试图围绕VT102序列以及像ncurses这样的库如何工作。
举一个例子,当我打开Emacs时,它会填充终端窗口。当我点击 Cx Cc 时,程序退出,我的终端窗口看起来与我启动emacs之前看起来完全一致(即光标上方的行显示emacs
我的zsh历史记录中的命令,而不是emacs提供的任何命令。)
作为一种“hello world”,我写了一个小的ruby脚本打开/dev/tty
,然后写\x1B[48;597m\n
(空白行,带有背景颜色),因为那里有很多行在我的航站楼。程序然后睡了5秒钟,让我快乐地盯着明亮的橙色屏幕。然后它退出,让我在我的zsh提示下,在它上方有53行亮橙色。
两个问题:
我能够发送\x1B[2J
,但这与我执行clear
命令的方式相同,实际只是将所有内容移到终端窗口,直到我的光标位于在一个空白窗口的顶部,而不是将光标留在任何地方,如果我的程序没有在屏幕上写入大量空白行的话。
PS:不知道在这里使用哪些标签,任何人实际上都可能被订阅。
答案 0 :(得分:3)
使用背景颜色写空白线是否正确用颜色填充终端窗口?
没有。正确的方法(在支持BCE *的终端上)是设置背景颜色,然后使用ED序列擦除屏幕(例如,^[ [ 2 J
)。
*:大多数现代终端
如何通过向/ dev / tty发送一些VT102序列来完全清除屏幕?
使用ED。见上文。
如果您真正要做的是切换到备用屏幕(就像您的示例中的emacs一样),则备用屏幕由私人模式1049控制。您可以使用^[ [ ? 1 0 4 9 h
切换到它,并切换回来使用^[ [ ? 1 0 4 9 l
。但请注意,这是一个xterm扩展;它不是完全标准的,并且不受任何DEC硬件终端(例如VT102)的支持。