¿Cómo puedo borrar una pantalla de terminal después de que mi usuario ha seleccionado una opción del menú de mi aplicación?
¿Cómo puedo borrar una pantalla de terminal después de que mi usuario ha seleccionado una opción del menú de mi aplicación?
Respuestas:
:! ejecutar el comando de shell
:! CLS debajo de las ventanas
: claro en linux y OS X
:! cls
es suficiente para mi caso de uso, pero no funciona para el caso del autor de la pregunta, ya que el autor de la pregunta no está usando GHCi.
Esto es lo que puede estar buscando:
ansi-terminal: soporte de terminal ANSI simple, con compatibilidad con Windows
Puede encontrarlo en Hackage e instalarlo usandocabal install ansi-terminal
. Específicamente tiene funciones para limpiar la pantalla, mostrar colores, mover el cursor, etc.Usarlo para limpiar la pantalla es fácil: (esto es con GHCI)
import System.Console.ANSI
clearScreen
En una terminal que comprende las secuencias de escape ANSI (creo que todos los términos en los sistemas Unix / Linux) puede hacerlo simplemente con:
clear = putStr "\ESC[2J"
El 2
borra toda la pantalla. Puede utilizar 0
o 1
respectivamente si desea borrar desde el cursor hasta el final de la pantalla o desde el cursor hasta el principio de la pantalla.
Sin embargo, no creo que esto funcione en el shell de Windows.
Simplemente presione Ctrl + L (funciona en Windows)
En sistemas Unix puede hacer lo System.system "clear"
que simplemente invoca la utilidad de línea de comandos clear. Para una solución que no dependa de herramientas externas, necesitaría una biblioteca que resuma diferentes tipos de terminales como, por ejemplo, ansi-terminal .
Una forma rápida en Windows sería
import System.Process
clear :: IO ()
clear = system "cls"
system "clear
.
En Windows, use Ctrl + L para el terminal del símbolo del sistema de Haskell. Y, para el GUI usar Ctrl + S .
Bajo Linux (Ubuntu al menos), ese es el código que uso para borrar la terminal:
import qualified System.Process as SP
clearScreen :: IO ()
clearScreen = do
_ <- SP.system "reset"
return ()