Come posso cancellare la schermata di un terminale dopo che il mio utente ha selezionato un'opzione dal menu della mia applicazione?
Come posso cancellare la schermata di un terminale dopo che il mio utente ha selezionato un'opzione dal menu della mia applicazione?
Risposte:
:! eseguire il comando della shell
:! Cls sotto le finestre
! chiaro sotto Linux e OS X
:! cls
è abbastanza sufficiente per il mio caso d'uso ma non funziona per il caso del richiedente in quanto il richiedente non sta usando GHCi.
Questo è quello che potresti cercare:
terminale ansi: semplice supporto del terminale ANSI, con compatibilità con Windows
Puoi trovarlo in Hackage e installarlo usandocabal install ansi-terminal
. Ha specificamente funzioni per pulire lo schermo, visualizzare i colori, spostare il cursore, ecc.Usarlo per cancellare lo schermo è facile: (questo è con GHCI)
import System.Console.ANSI
clearScreen
Su un terminale che comprende le sequenze di escape ANSI (credo ogni termine nei sistemi Unix / Linux) puoi farlo semplicemente con:
clear = putStr "\ESC[2J"
Il 2
cancella l'intero schermo. È possibile utilizzare rispettivamente 0
o 1
se si desidera cancellare dal cursore alla fine dello schermo o dal cursore all'inizio dello schermo.
Tuttavia non credo che funzioni nella shell di Windows.
Basta premere Ctrl + L (funziona su Windows)
Sui sistemi Unix puoi farlo System.system "clear"
semplicemente invoca l'utilità della riga di comando clear. Per una soluzione che non dipende da strumenti esterni, avresti bisogno di una libreria che astragga su diversi tipi di terminale come ad esempio ansi-terminal .
Un modo rapido su Windows sarebbe quello di
import System.Process
clear :: IO ()
clear = system "cls"
system "clear
.
Su Windows, usa Ctrl + L per il terminale del prompt dei comandi Haskell. E, per la GUI utilizzare Ctrl + S .
Sotto Linux (Ubuntu almeno), questo è il codice che uso per cancellare il terminale:
import qualified System.Process as SP
clearScreen :: IO ()
clearScreen = do
_ <- SP.system "reset"
return ()