Wie kann ich einen Terminalbildschirm löschen, nachdem mein Benutzer eine Option aus dem Menü meiner Anwendung ausgewählt hat?
Wie kann ich einen Terminalbildschirm löschen, nachdem mein Benutzer eine Option aus dem Menü meiner Anwendung ausgewählt hat?
Antworten:
:! Führen Sie den Shell-Befehl aus
:! cls unter Windows
:! klar unter Linux und OS X.
:! 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
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 2
löscht den gesamten Bildschirm. Sie können 0
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.
Drücken Sie einfach Strg + L (funktioniert unter Windows)
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 .
Ein schneller Weg unter Windows wäre zu
import System.Process
clear :: IO ()
clear = system "cls"
system "clear
.
Verwenden Sie unter Windows Strg + L für das Haskell-Eingabeaufforderungsterminal. Und für GUI verwenden Strg + S .
Unter Linux (zumindest Ubuntu) ist dies der Code, den ich zum Löschen des Terminals verwende:
import qualified System.Process as SP
clearScreen :: IO ()
clearScreen = do
_ <- SP.system "reset"
return ()