¿Puede ser más claro sobre qué sistema de interfaz de usuario está utilizando en su programa Haskell? ¿Quiere decir que simplemente está leyendo y escribiendo texto en stdin / stdout? Si es así, esos no tienen un concepto implícito de "pantalla". Si tiene la intención de que su programa funcione asumiendo que hay una terminal adjunta a stdin / stdout, entonces debería estar codificando su programa para usar algún paquete de control de terminal, como la respuesta de @ZackS indicada.
MtnViewMark
2
Por favor seleccione la respuesta correcta. ¡La gente tiene que pasar por todas las respuestas!
Shishir Gupta
Respuestas:
195
:! ejecutar el comando de shell :! CLS debajo de las ventanas : claro en linux y OS X
@ Peter, mi mejor suposición es que se debe a que no creen que sea una solución de Haskell (con razón; solo funciona en GHCi), no les funciona (depende del shell) o simplemente consideran que la respuesta de ZachS es mejor . :! clses 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.
John Dvorak
58
Esto es lo que puede estar buscando:
ansi-terminal: soporte de terminal ANSI simple, con compatibilidad con Windows
Puede encontrarlo en Hackage e instalarlo usando cabal 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)
Esta es la respuesta correcta. Sin embargo, intente buscar el paquete en el administrador de paquetes de su sistema, ya que cabal generalmente no funciona con eso y no ofrece un comando de desinstalación.
Evi1M4chine
14
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 2borra toda la pantalla. Puede utilizar 0o 1respectivamente 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.
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 .
Respuestas:
:! ejecutar el comando de shell
:! CLS debajo de las ventanas
: claro en linux y OS X
fuente
:! 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
fuente
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:
El
2
borra toda la pantalla. Puede utilizar0
o1
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.
fuente
Simplemente presione Ctrl + L (funciona en Windows)
fuente
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 .fuente
Una forma rápida en Windows sería
fuente
system "clear
.En Windows, use Ctrl + L para el terminal del símbolo del sistema de Haskell. Y, para el GUI usar Ctrl + S .
fuente
Bajo Linux (Ubuntu al menos), ese es el código que uso para borrar la terminal:
fuente