Können Sie klarer sagen, welches Benutzeroberflächensystem Sie in Ihrem Haskell-Programm verwenden? Meinen Sie damit, dass Sie einfach Text in stdin / stdout lesen und schreiben? Wenn ja, haben diese kein implizites Konzept von "Bildschirm". Wenn Sie beabsichtigen, dass Ihr Programm unter der Annahme funktioniert, dass an stdin / stdout ein Terminal angeschlossen ist, sollten Sie Ihr Programm so codieren, dass ein Terminalsteuerungspaket verwendet wird, z. B. die Antwort von @ZackS.
MtnViewMark
2
Bitte wählen Sie die richtige Antwort. Die Leute müssen alle Antworten durchgehen!
Shishir Gupta
Antworten:
194
:! Führen Sie den Shell-Befehl aus :! cls unter Windows :! klar unter Linux und OS X.
@Peter Ich vermute, es liegt daran, dass sie nicht glauben, dass es sich um eine Haskell-Lösung handelt (zu Recht; es funktioniert nur in GHCi), dass es für sie nicht funktioniert (Shell-abhängig) oder dass sie die Antwort von ZachS einfach für eine bessere halten . :! clsist ausreichend für meinen Anwendungsfall, funktioniert aber nicht für den Fall des Fragestellers, da der Fragesteller kein GHCi verwendet.
John Dvorak
58
Dies ist, was Sie vielleicht suchen:
ansi-terminal: Einfache ANSI-Terminal-Unterstützung mit Windows-Kompatibilität
Sie können es in Hackage finden und mit installieren cabal install ansi-terminal. Es verfügt speziell über Funktionen zum Löschen des Bildschirms, Anzeigen von Farben, Bewegen des Cursors usw.
Das Löschen des Bildschirms ist einfach: (Dies ist mit GHCI)
Dies ist die richtige Antwort. Versuchen Sie jedoch, im Paketmanager Ihres Systems nach dem Paket zu suchen, da cabal im Allgemeinen damit nicht funktioniert und keinen Deinstallationsbefehl anbietet.
Evi1M4chine
13
Auf einem Terminal, das ANSI-Escape-Sequenzen versteht (ich glaube, jeder Begriff in Unix / Linux-Systemen), können Sie dies einfach tun mit:
clear = putStr "\ESC[2J"
Das 2löscht den gesamten Bildschirm. Sie können 0bzw. 1verwenden, wenn Sie vom Cursor zum Ende des Bildschirms oder vom Cursor zum Anfang des Bildschirms löschen möchten.
Ich denke jedoch nicht, dass dies in der Windows-Shell funktioniert.
Auf Unix-Systemen können Sie dies tun System.system "clear", indem Sie einfach das Befehlszeilenprogramm clear aufrufen. Für eine Lösung, die nicht von externen Tools abhängt, benötigen Sie eine Bibliothek, die über verschiedene Terminaltypen wie z. B. ansi-terminal abstrahiert .
Antworten:
:! Führen Sie den Shell-Befehl aus
:! cls unter Windows
:! klar unter Linux und OS X.
quelle
:! cls
ist ausreichend für meinen Anwendungsfall, funktioniert aber nicht für den Fall des Fragestellers, da der Fragesteller kein GHCi verwendet.Dies ist, was Sie vielleicht suchen:
ansi-terminal: Einfache ANSI-Terminal-Unterstützung mit Windows-Kompatibilität
Sie können es in Hackage finden und mit installierencabal install ansi-terminal
. Es verfügt speziell über Funktionen zum Löschen des Bildschirms, Anzeigen von Farben, Bewegen des Cursors usw.Das Löschen des Bildschirms ist einfach: (Dies ist mit GHCI)
import System.Console.ANSI
clearScreen
quelle
Auf einem Terminal, das ANSI-Escape-Sequenzen versteht (ich glaube, jeder Begriff in Unix / Linux-Systemen), können Sie dies einfach tun mit:
Das
2
löscht den gesamten Bildschirm. Sie können0
bzw.1
verwenden, wenn Sie vom Cursor zum Ende des Bildschirms oder vom Cursor zum Anfang des Bildschirms löschen möchten.Ich denke jedoch nicht, dass dies in der Windows-Shell funktioniert.
quelle
Drücken Sie einfach Strg + L (funktioniert unter Windows)
quelle
Auf Unix-Systemen können Sie dies tun
System.system "clear"
, indem Sie einfach das Befehlszeilenprogramm clear aufrufen. Für eine Lösung, die nicht von externen Tools abhängt, benötigen Sie eine Bibliothek, die über verschiedene Terminaltypen wie z. B. ansi-terminal abstrahiert .quelle
Ein schneller Weg unter Windows wäre zu
quelle
system "clear
.Verwenden Sie unter Windows Strg + L für das Haskell-Eingabeaufforderungsterminal. Und für GUI verwenden Strg + S .
quelle
Unter Linux (zumindest Ubuntu) ist dies der Code, den ich zum Löschen des Terminals verwende:
quelle