Pencerelerde komut istemi çalıştırdığınızda, ekranı temizlemek için clear
komutunu yazabilirsiniz. Windows'da swipl prolog (komut satırına swipl
yazarak) çalıştırırken aynı şeyi nasıl yapıyorsunuz?Windows'ta Swipl prolog içindeki Ekranı Temizleme
cevap
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').
Güzel catch:
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@CapelliC: Yararlı, Bilmiyorum, daha temiz bir arıtma. – Orbling
@CapelliC: '\ e, ISO değil ve GNU ve SICStus tarafından reddedildi. Bunun yerine '\ 33 \' kullanın. – false