Quando si esegue il prompt dei comandi in Windows è possibile digitare il comando clear
per cancellare lo schermo. Come si fa la stessa cosa quando si esegue Swift Prolog (digitando swipl
nel prompt dei comandi) in Windows?Schermata di cancellazione in prolog Swipl in windows
risposta
Sui terminali unix, c'è la risorsa library(tty)
e che ha tty_clear/0
, ma i terminali Windows non supportano la libreria terminale. Tuttavia, supportano ANSI Escape Codes.
I codici di escape sono sequenze di caratteri a partire dal carattere ESC
(escape), ASCII 0x1B = 27
. La maggior parte inizia con l'introduttore della sequenza di controllo, che è l'escape seguito da una parentesi sinistra: ESC [
, noto come CSI
.
in modo da poter emettere la sequenza di codice per uno schermo trasparente, che è la disfunzione erettile (cancellazione dei dati) di comando, che assume la forma:
CSI 2 J -- which expands to: ESC [ 2 J
Da SWI-Prolog questo può essere rilasciato utilizzando il format/2
primitiva .
format('~c~s', [0x1b, "[2J"]). % issue CSI 2 J
Il comando ED 2, completo terminale chiara, sulla manipolazione MSDOS ANSI reimposta il cursore in alto a sinistra, ma che non è necessariamente il caso su tutti i terminali, in modo migliore per combinare con il CUP (posizione del cursore), che come reset su home è semplicemente: CSI H
.
format('~c~s~c~s', [0x1b, "[H", 0x1b, "[2J"]). % issue CSI H CSI 2 J
Aggiornamento: semplificazione
Grazie a @CapelliC per un sostituto forma più chiara, utilizzando il codice \e
fuga per fuga!
Plain schermo chiaro:
cls :- write('\e[2J').
O con reset casa:
cls :- write('\e[H\e[2J').
- 1. Schermata di cancellazione della console Win32 C++ senza lampeggiare
- 2. Schermata di acquisizione di Windows store App
- 3. Concatenazione di elenchi in Prolog
- 4. Definizione del tipo di Prolog in swi-prolog
- 5. Herbrand in Prolog
- 6. tabelle hash in prolog
- 7. power function in prolog
- 8. Ciao mondo in Prolog
- 9. Come annullare in Prolog
- 10. istruzioni switch in Prolog
- 11. Tipo di cancellazione in Java
- 12. Prolog Programmazione in Ubuntu
- 13. sottoinsiemi in Prolog
- 14. Logiche in Prolog
- 15. swi-prolog la negazione
- 16. Definire predicati in SICStus Prolog/SWI-Prolog REPL
- 17. Ordinare un elenco in Prolog
- 18. Swi prolog in Semantic Web
- 19. Implementazione dell'algoritmo DPLL in Prolog
- 20. RegEx Parser scritto in Prolog
- 21. Scrivere macro in SWI-Prolog
- 22. Multithreading in ... lingue funzionali? (Prolog)
- 23. Termini Hilog in (XSB) Prolog
- 24. Articoli a caso in Prolog
- 25. Ordinare le stringhe in Prolog
- 26. Chiave di cancellazione in Editor di traduzioni
- 27. grammatica free context in prolog
- 28. Taglio e Fail in Prolog
- 29. Asserzione di regole dinamiche in SWI-prolog
- 30. Soddisfare una serie di obiettivi in Prolog
Bella presa. Ho dimenticato le sequenze ANSI. Puoi esprimere ESC come \ e, e quindi memorizzare nel file di configurazione SWI-Prolog la procedura: 'cls: - write ('\ e [2J').' Or 'cls: - write ('\ e [H \ e [ 2J '). ' – CapelliC
@CapelliC: Utile, non sapevo che supportasse' \ e', una raffinatezza molto più pulita. – Orbling
@CapelliC: '\ e' non è ISO e viene rifiutato da GNU e SICStus. Usa invece '\ 33 \'. – false