Ish*_*han 8 windows shell command-line prolog
在Windows中运行命令提示符时,可以键入clear命令以清除屏幕.当你swipl在Windows 中运行swipl prolog(通过输入命令提示符)时,你如何做同样的事情?
Orb*_*ing 17
在unix终端上,有library(tty)资源tty_clear/0,但是Windows终端不支持终端库.但是,它们确实支持ANSI转义码.
转义码是以ESC(转义)字符开头的字符序列ASCII 0x1B = 27.大多数都是从控制序列导入器开始的,这是一个左旋风机后面的逃逸: ESC [被称为CSI.
因此,您可以发出清除屏幕的代码序列,即ED(擦除数据)命令,其形式如下:
CSI 2 J -- which expands to: ESC [ 2 J
Run Code Online (Sandbox Code Playgroud)
从SWI-Prolog可以使用format/2原语发布.
format('~c~s', [0x1b, "[2J"]). % issue CSI 2 J
Run Code Online (Sandbox Code Playgroud)
MSDOS ANSI处理中的ED 2命令,完全终端清除,将光标重置为左上角,但并非所有终端都是如此,因此最好与CUP(光标位置)命令结合使用,该命令作为重置到家是简单的:CSI H.
format('~c~s~c~s', [0x1b, "[H", 0x1b, "[2J"]). % issue CSI H CSI 2 J
Run Code Online (Sandbox Code Playgroud)
更新:简化
感谢@CapelliC提供了另一种更清晰的表单,使用\e转义码进行转义!
普通清屏:
cls :- write('\e[2J').
Run Code Online (Sandbox Code Playgroud)
或者通过重置:
cls :- write('\e[H\e[2J').
Run Code Online (Sandbox Code Playgroud)