通过打印字符清除屏幕?

时间:2016-06-12 13:48:34

标签: terminal scheme ascii

我使用chez-scheme,我无法找到完全清除屏幕的方法。 (如果有人知道比打印更好的方式,我也会对此感兴趣,但这不是我的问题)

我可以通过^ L(control-L)清除屏幕或给出clear命令(至少使用bash)等同于输出ASCII字符12:Form feed。 但是,打印这没什么。如果我使用(display (integer->char 12)),则只打印newline。编码此字符的另一种方法是\f(类似于\n的{​​{1}}),但在Python newline和方案print("\f")中只是一个{ {1}}。

我对ASCII 12的含义的理解是错误的,还是缺乏实现?

有没有办法清除应该跨语言使用的屏幕,类似于(display "\f")的{​​{1}}?

2 个答案:

答案 0 :(得分:27)

如果您要清除屏幕,printf

中的“ANSI”序列
\033[2J

清除整个屏幕,例如,

printf '\033[2J'

命令行clear程序使用它,同时将光标移动到“home”位置,再次是“ANSI”序列:

\033[H

程序从终端数据库获取信息。例如,对于TERM=vt100,它可能会看到这一点(使用\E作为\033):

clear=\E[H\E[J$<50>

$<50>表示真实VT100所需的填充。您可能会注意到此字符串中不存在2。这是因为光标首先移动到主页(左上)位置,并且2(整个屏幕)不是必需的。消除字符串使VT100s 更快。

另一方面,如果您只想 重置 终端,您可以使用VT100-style RIS

\033c

但这有副作用,除了不在ECMA-48之外。这些错误报告适用于\033c副作用

进一步阅读:

CSI Ps J  Erase in Display (ED).
            Ps = 0  -> Erase Below (default).
            Ps = 1  -> Erase Above.
            Ps = 2  -> Erase All.
            Ps = 3  -> Erase Saved Lines (xterm).

答案 1 :(得分:5)

您可以打印重置终端的\033c

petite -q <<< '(display "\033c")'

\033是转义,c是文字c。

我无法向您提供有关支持广泛程度的任何信息。