我使用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}}?
答案 0 :(得分:27)
如果您要清除屏幕,printf
\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。
我无法向您提供有关支持广泛程度的任何信息。