Windows でコマンド プロンプトを実行している場合、clear
コマンドを入力して画面をクリアできます。swipl
Windows で (コマンド プロンプトに入力して) swipl prolog を実行しているときに、同じことをどのように行うのですか?
1 に答える
UNIX 端末では、library(tty)
リソース と がtty_clear/0
ありますが、Windows 端末では端末ライブラリがサポートされていません。ただし、ANSI エスケープ コードはサポートしています。
ESC
エスケープ コードは、 (エスケープ) 文字で始まる文字シーケンスASCII 0x1B = 27
です。ほとんどの場合、コントロール シーケンス イントロデューサで始まります。これは、エスケープとそれに続く左ブラッカー: ESC [
として知られていCSI
ます。
したがって、スクリーン クリアのコード シーケンスを発行できます。これは ED (データの消去) コマンドであり、次の形式を取ります。
CSI 2 J -- which expands to: ESC [ 2 J
format/2
SWI-Prolog から、これはプリミティブを使用して発行できます。
format('~c~s', [0x1b, "[2J"]). % issue CSI 2 J
MSDOS ANSI 処理での ED 2 コマンド、full terminal clear は、カーソルを左上にリセットしますが、必ずしもすべての端末でそうであるとは限らないため、CUP (Cursor Position) コマンドと組み合わせてリセットするのが最適です。 to home は単純に: 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').