当您在 Windows 中运行命令提示符时,您可以键入 clear
命令来清除屏幕。那么当您在 Windows 上运行 swipl Prolog(通过在命令提示符中键入swipl
)时,如何执行相同的操作?
system(clear).
当您在 Windows 中运行命令提示符时,您可以键入 clear
命令来清除屏幕。那么当您在 Windows 上运行 swipl Prolog(通过在命令提示符中键入swipl
)时,如何执行相同的操作?
system(clear).
library(tty)
的资源,其中包含tty_clear/0
函数,但是Windows终端不支持该终端库。然而,Windows终端支持ANSI转义码。ESC
(转义)字符开始的字符序列,ASCII 0x1B = 27
。大多数转义码都以控制序列引导符开头,这是转义后跟着左方括号:ESC [
,称为CSI
。CSI 2 J -- which expands to: ESC [ 2 J
使用SWI-Prolog,可以使用format/2
原语来实现此操作。
format('~c~s', [0x1b, "[2J"]). % issue CSI 2 J
ED 2命令,完全清除终端,在MSDOS ANSI处理中将光标重置为左上角,但并非所有终端都是如此,因此最好结合CUP(光标位置)命令使用,它作为重置到主页的简单方法是:CSI H
。
format('~c~s~c~s', [0x1b, "[H", 0x1b, "[2J"]). % issue CSI H CSI 2 J
更新:简化
感谢@CapelliC提供的另一种更清晰的形式,使用\e
转义码进行转义!
纯净清屏:
cls :- write('\e[2J').
或使用主页重置:
cls :- write('\e[H\e[2J').
cls :- write('\e[2J').
或cls :- write('\e[H\e[2J').
- CapelliC\e
,这是一个更干净的改进。 - Orbling\e
不是 ISO 标准,被 GNU 和 SICStus 拒绝。请使用\33\
代替。 - false