2013-06-04 11 views

cevap

14

Unix terminallerinde library(tty) kaynağı var ve tty_clear/0 var, ancak windows terminalleri terminal kitaplığını desteklemiyor. Ancak, ANSI Escape Codes'u destekliyorlar.

Kaçış kodları, ESC (çıkış) karakteriyle başlayan ASCII 0x1B = 27 karakter dizileridir. Birçoğu, CSI olarak bilinen, ESC [ numaralı bir sol ayraç tarafından takip edilen kaçış olan kontrol dizisi tanıtıcısı ile başlar. Bu format/2 ilkel kullanılarak verilebilir SWI-Prolog Dan

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

:

Yani ED olduğunu açıkça bir ekran için kod dizisi verebilir (Silme Veriler) komutu, biçimini alır ki .

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

MSDOS ANSI kullanım ile ilgili ED 2 komut, berrak tam terminali, (sol-üst, ama böylece mutlaka CUP ile birleştirmek için en iyi tüm terminallerde durum böyle değil İmleç Pozisyon imleci sıfırlar) eve sıfırlama olarak basitçe komut: CSI H.

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

Güncelleme: Basitleştirme

bir alternatif ve daha net form için @CapelliC sayesinde kaçmak için \e kaçış kodu kullanarak!

Düz net ekranı:

cls :- write('\e[H\e[2J'). 
+2

Güzel catch:

cls :- write('\e[2J'). 

Veya evde reset ile

. ANSI dizilerini unuttum. ESC'yi \ e gibi ifade edebilir ve SWI-Prolog yapılandırma dosyasında saklayabilirsiniz: cls: - write ('\ e [2J'). 'Veya' cls: - write ('\ e [H \ e [ 2J '). – CapelliC

+0

@CapelliC: Yararlı, Bilmiyorum, daha temiz bir arıtma. – Orbling

+0

@CapelliC: '\ e, ISO değil ve GNU ve SICStus tarafından reddedildi. Bunun yerine '\ 33 \' kullanın. – false