Как очистить экран терминала в Haskell? - PullRequest
82 голосов
/ 18 марта 2010

Как очистить экран терминала после того, как мой пользователь выбрал опцию в меню моего приложения?

Ответы [ 8 ]

171 голосов
/ 19 февраля 2012

:! запустить команду оболочки
:! CLS под окнами
:! очистить под Linux и OS X

56 голосов
/ 18 марта 2010

Это то, что вы можете искать:

ANSI-терминал: Поддержка простого терминала ANSI, с совместимостью с Windows

Вы можете найти его в Hackage и установить используя cabal install ansi-terminal. В частности, он имеет функции для очистки экрана, отображения цветов, перемещения курсора и т. Д.

Использовать его для очистки экрана очень просто: (это с GHCI)

import System.Console.ANSI<br /><br />clearScreen

11 голосов
/ 20 февраля 2012

На терминале, который понимает escape-последовательности ANSI (я полагаю, каждый термин в системах Unix / Linux), вы можете сделать это просто:

clear = putStr "\ESC[2J"

2 очищает весь экран. Вы можете использовать 0 или 1 соответственно, если хотите очистить курсор от конца экрана или от курсора до начала экрана.

Однако я не думаю, что это работает в оболочке Windows.

8 голосов
/ 18 марта 2010

В системах Unix вы можете сделать System.system "clear", который просто вызывает утилиту командной строки clear. Для решения, которое не зависит от внешних инструментов, вам потребуется библиотека, которая абстрагируется от терминалов разных типов, например, ansi-терминал .

5 голосов
/ 24 мая 2017

Просто нажмите Ctrl + L (работает в Windows)

4 голосов
/ 18 июля 2018

В Windows используйте Ctrl + L для терминала командной строки Haskell. А для GUI используйте Ctrl + S .

3 голосов
/ 12 февраля 2013

Быстрый способ для Windows был бы

import System.Process

clear :: IO ()
clear = system "cls"
0 голосов
/ 11 мая 2017

В Linux (по крайней мере, в Ubuntu) я использую код для очистки терминала:

import qualified System.Process as SP

clearScreen :: IO ()
clearScreen = do
  _ <- SP.system "reset"
  return ()
...