我正在使用 chez-scheme,但找不到完全清除屏幕的方法。 (如果有人知道比打印更好的方法,我也会对此感兴趣,但这不是我的问题)
根据我的发现,通过 ^L (control-L) 清除屏幕或给出 clear
命令(至少在 bash 中)相当于输出 ASCII 字符 12:Form feed
.
但是,打印它什么都不做。如果我使用 (display (integer->char 12))
它只打印一个 newline
.编码此字符的另一种方法是 \f
(类似于 \n
的 newline
),但在 Python 中 print("\f")
以及在方案 (display "\f")
只是一个 newline
.
我对 ASCII 12 含义的理解是错误的,还是缺乏实现?
有什么方法可以清除跨语言的屏幕,类似于 \n
对于 newline
?
最佳答案
如果要清除屏幕,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
(整个屏幕)不是必需的。从字符串中消除它使 VT100 更快一些。另一方面,如果您只想 重置 终端,您可以使用VT100-style
RIS
:\033c
但这有副作用,除了不在 ECMA-48 中。这些错误报告是针对
\033c
的副作用的。 :进一步阅读:
CSI Ps J 显示中的删除 (ED)。
Ps = 0 -> 删除下方(默认)。
Ps = 1 -> 删除上面。
Ps = 2 -> 全部删除。
Ps = 3 -> 删除已保存的行 (xterm)。
关于terminal - 通过打印字符来清除屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37774983/