在windows中清除Swipl prolog中的屏幕
在windows中运行命令提示符时,可以键入在windows中清除Swipl prolog中的屏幕,windows,shell,command-line,prolog,Windows,Shell,Command Line,Prolog,在windows中运行命令提示符时,可以键入clear命令以清除屏幕。在windows中运行swipl prolog(通过在命令提示符中键入swipl)时,如何执行相同的操作?在unix终端上,有库(tty)资源,但windows终端不支持终端库。然而,他们确实支持 转义码是以ESC(转义)字符开始的字符序列,ASCII 0x1B=27。大多数都是从控制序列导入器开始的,它是一个转义,然后是一个左括号:ESC[,称为CSI 因此,您可以发出屏幕清除的代码序列,即ED(擦除数据)命令,其形式如下:
clear
命令以清除屏幕。在windows中运行swipl prolog(通过在命令提示符中键入swipl
)时,如何执行相同的操作?在unix终端上,有库(tty)
资源,但windows终端不支持终端库。然而,他们确实支持
转义码是以ESC
(转义)字符开始的字符序列,ASCII 0x1B=27
。大多数都是从控制序列导入器开始的,它是一个转义,然后是一个左括号:ESC[
,称为CSI
因此,您可以发出屏幕清除的代码序列,即ED(擦除数据)命令,其形式如下:
CSI 2 J -- which expands to: ESC [ 2 J
从SWI Prolog,可以使用原语发出该命令
format('~c~s', [0x1b, "[2J"]). % issue CSI 2 J
MSDOS ANSI handling上的ED 2命令full terminal clear将光标重置为左上角,但并非所有终端都是如此,因此最好与CUP(光标位置)命令结合使用,该命令作为重置为home的简单命令:CSI H
format('~c~s~c~s', [0x1b, "[H", 0x1b, "[2J"]). % issue CSI H CSI 2 J
更新:简化 感谢提供了另一种更清晰的形式,使用
\e
转义码进行转义
纯清晰屏幕:
cls :- write('\e[2J').
或使用主页重置:
cls :- write('\e[H\e[2J').
很好的捕获。我忘记了ANSI序列。您可以像\e一样表达ESC,从而将过程存储在SWI Prolog配置文件中:
cls:-write('\e[2J')。
或cls:-write('\e[H\e[2J')).
@capelical:有用,我不知道它支持\e
,这是一种更干净的改进。@capelical:\e
不是ISO,被GNU和SICStus拒绝。请改用\33\
。