web-dev-qa-db-fra.com

Comment effacer l'écran du terminal dans Haskell?

Comment effacer un écran de terminal une fois que l'utilisateur a sélectionné une option dans le menu de mon application?

71
Nubkadiya

:! lance la commande shell
:! cls sous les fenêtres
:! effacer sous linux et OS X

162
void

Sur un terminal qui comprend les séquences d'échappement ANSI (je crois que tous les termes des systèmes Unix/Linux), vous pouvez le faire simplement avec:

clear = putStr "\ESC[2J"

Le 2 efface tout l'écran. Vous pouvez utiliser 0 ou 1 respectivement si vous souhaitez effacer du curseur jusqu'à la fin de l'écran ou du curseur au début de l'écran.

Cependant, je ne pense pas que cela fonctionne dans le shell Windows.

10
Federico Squartini

Sur les systèmes Unix, vous pouvez utiliser System.system "clear" qui appelle simplement l'utilitaire de ligne de commande clear. Pour une solution qui ne dépend pas d'outils externes, vous aurez besoin d'une bibliothèque qui résume sur différents types de terminaux, comme par exemple ansi-terminal .

8
sepp2k

Appuyez simplement sur Ctrl + L (fonctionne sous Windows)

5
mitaness

Un moyen rapide sous Windows serait de

import System.Process

clear :: IO ()
clear = system "cls"
3
Boris

Sous Windows, utilisez Ctrl + L pour la commande Haskell terminal invite. Et, pour l'interface graphique, utilisez Ctrl + S .

2
Shuvam Shah

Sous Linux (au moins Ubuntu), c'est le code que j'utilise pour nettoyer le terminal:

import qualified System.Process as SP

clearScreen :: IO ()
clearScreen = do
  _ <- SP.system "reset"
  return ()
0
Stephane Rolland