Как очистить экран терминала в Haskell?
Как очистить экран терминала после того, как мой пользователь выбрал опцию в меню моего приложения?
8 ответов
:! запустить команду оболочки
:! CLS под окнами
:! очистить под linux и OS X
Это то, что вы можете искать:
ANSI-терминал: простая поддержка терминала ANSI, с совместимостью с Windows
Вы можете найти его в Hackage и установить с помощьюcabal install ansi-terminal
, В частности, он имеет функции для очистки экрана, отображения цветов, перемещения курсора и т. Д.Использовать его для очистки экрана легко: (это с GHCI)
import System.Console.ANSI
clearScreen
На терминале, который понимает escape-последовательности ANSI (я верю каждому термину в системах Unix/Linux), вы можете сделать это просто с помощью:
clear = putStr "\ESC[2J"
2
очищает весь экран Ты можешь использовать 0
или же 1
соответственно, если вы хотите очистить курсор от конца экрана или от курсора до начала экрана.
Однако я не думаю, что это работает в оболочке Windows.
В Windows используйте Ctrl + L для терминала командной строки Haskell. А для GUI используйте Ctrl + S.
В системах Unix вы можете сделать System.system "clear"
который просто вызывает утилиту командной строки clear. Для решения, которое не зависит от внешних инструментов, вам понадобится библиотека, которая абстрагируется от различных типов терминалов, таких как, например, ansi-терминал.
Быстрый способ на Windows был бы
import System.Process
clear :: IO ()
clear = system "cls"
Под Linux (по крайней мере, Ubuntu) я использую код для очистки терминала:
import qualified System.Process as SP
clearScreen :: IO ()
clearScreen = do
_ <- SP.system "reset"
return ()