在Windows中的Swipl prolog中清除屏幕

时间:2013-06-04 02:11:23

标签: windows shell command-line prolog

在Windows中运行命令提示符时,可以键入clear命令来清除屏幕。当您在Windows中运行swipl prolog(在命令提示符中键入swipl)时,如何做同样的事情?

1 个答案:

答案 0 :(得分:15)

在unix终端上,有library(tty)资源且有tty_clear/0,但是Windows终端不支持终端库。但是,他们确实支持ANSI Escape Codes

转义码是以ESC(转义)字符ASCII 0x1B = 27开头的字符序列。大多数操作都是从控制序列导入器开始的,这是一个左操作器后面的转义:ESC [,称为CSI

因此,您可以发出清除屏幕的代码序列,即ED(擦除数据)命令,其格式为:

CSI 2 J   -- which expands to: ESC [ 2 J

从SWI-Prolog可以使用format/2原语发布。

format('~c~s', [0x1b, "[2J"]). % issue CSI 2 J

EDD命令,完全终端清除,在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').