Pouvez-vous être plus clair sur le système d'interface utilisateur que vous utilisez dans votre programme Haskell? Voulez-vous dire que vous lisez et écrivez simplement du texte sur stdin / stdout? Si tel est le cas, ceux-ci n'ont pas de concept implicite d '"écran". Si vous avez l'intention de faire fonctionner votre programme en supposant qu'un terminal est attaché à stdin / stdout, alors vous devriez coder votre programme pour utiliser un package de contrôle de terminal, tel que la réponse de @ZackS indiquée.
MtnViewMark
2
Veuillez choisir la bonne réponse. Les gens doivent passer par toutes les réponses!
Shishir Gupta
Réponses:
195
:! exécutez la commande shell :! cls sous Windows : clair sous Linux et OS X
@Peter ma meilleure supposition est que c'est parce qu'ils ne pensent pas que c'est une solution haskell (à juste titre; cela ne fonctionne que dans GHCi), cela ne fonctionne pas pour eux (dépend du shell) ou ils considèrent simplement la réponse de ZachS comme une meilleure. . :! clsest amplement suffisant pour mon cas d'utilisation mais ne fonctionne pas pour le cas du demandeur car celui-ci n'utilise pas GHCi.
Vous pouvez le trouver dans Hackage et l'installer en utilisant cabal install ansi-terminal. Il a spécifiquement des fonctions pour effacer l'écran, afficher les couleurs, déplacer le curseur, etc.
L'utiliser pour effacer l'écran est facile: (c'est avec GHCI)
C'est la bonne réponse. Essayez cependant de rechercher le paquet dans le gestionnaire de paquets de votre système, car cabal ne fonctionne généralement pas avec cela et n'offre pas de commande de désinstallation.
Evi1M4chine
14
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 2efface tout l'écran. Vous pouvez utiliser respectivement 0ou 1si vous souhaitez effacer du curseur à 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.
Sur les systèmes Unix, vous pouvez faire System.system "clear"ce qui appelle simplement l'utilitaire de ligne de commande clear. Pour une solution qui ne dépend pas d'outils externes, vous auriez besoin d'une bibliothèque qui résume sur différents types de terminaux comme par exemple ansi-terminal .
Réponses:
:! exécutez la commande shell
:! cls sous Windows
: clair sous Linux et OS X
la source
:! cls
est amplement suffisant pour mon cas d'utilisation mais ne fonctionne pas pour le cas du demandeur car celui-ci n'utilise pas GHCi.Voici ce que vous recherchez peut-être:
ansi-terminal: prise en charge simple du terminal ANSI, avec compatibilité Windows
Vous pouvez le trouver dans Hackage et l'installer en utilisantcabal install ansi-terminal
. Il a spécifiquement des fonctions pour effacer l'écran, afficher les couleurs, déplacer le curseur, etc.L'utiliser pour effacer l'écran est facile: (c'est avec GHCI)
import System.Console.ANSI
clearScreen
la source
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:
Le
2
efface tout l'écran. Vous pouvez utiliser respectivement0
ou1
si vous souhaitez effacer du curseur à 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.
la source
Appuyez simplement sur Ctrl + L (fonctionne sous Windows)
la source
Sur les systèmes Unix, vous pouvez faire
System.system "clear"
ce qui appelle simplement l'utilitaire de ligne de commande clear. Pour une solution qui ne dépend pas d'outils externes, vous auriez besoin d'une bibliothèque qui résume sur différents types de terminaux comme par exemple ansi-terminal .la source
Un moyen rapide sur Windows serait de
la source
system "clear
.Sous Windows, utilisez Ctrl + L pour le terminal d'invite de commande Haskell. Et, pour utiliser l' interface graphique Ctrl + S .
la source
Sous Linux (Ubuntu au moins), c'est le code que j'utilise pour effacer le terminal:
la source