Как я могу очистить экран терминала после того, как мой пользователь выбрал опцию в меню моего приложения?
Как я могу очистить экран терминала после того, как мой пользователь выбрал опцию в меню моего приложения?
Ответы:
:! запустите команду оболочки
:! cls под окнами
:! очистить под linux и OS X
:! cls
вполне достаточно для моего варианта использования, но не работает для случая спрашивающего, поскольку запрашивающий не использует GHCi.
Это то, что вы можете искать:
ansi-terminal: поддержка простого терминала 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.
Просто нажмите Ctrl + L (работает в Windows)
В системах Unix вы можете сделать System.system "clear"
это, просто запустив утилиту командной строки clear. Для решения, которое не зависит от внешних инструментов, вам понадобится библиотека, которая абстрагируется от разных типов терминалов, например, от ansi-terminal .
Быстрый способ в Windows -
import System.Process
clear :: IO ()
clear = system "cls"
system "clear
.
В Linux (по крайней мере, в Ubuntu) я использую этот код для очистки терминала:
import qualified System.Process as SP
clearScreen :: IO ()
clearScreen = do
_ <- SP.system "reset"
return ()