Не могли бы вы пояснить, какую систему пользовательского интерфейса вы используете в своей программе на Haskell? Вы имеете в виду, что вы просто читаете и записываете текст в stdin / stdout? Если так, то у них нет неявного понятия «экран». Если вы хотите, чтобы ваша программа работала, предполагая, что к stdin / stdout подключен терминал, тогда вы должны кодировать свою программу для использования некоторого пакета управления терминалом, такого как указанный ответ @ZackS.
MtnViewMark
2
Пожалуйста, выберите правильный ответ. Люди должны пройти все ответы!
Шишир Гупта
Ответы:
198
:! запустите команду оболочки :! cls под окнами :! очистить под linux и OS X
@Peter, я думаю, это потому, что они не думают, что это решение haskell (справедливо; оно работает только в GHCi), оно не работает для них (зависит от оболочки) или они просто считают ответ Закса лучшим . :! clsвполне достаточно для моего варианта использования, но не работает для случая спрашивающего, поскольку запрашивающий не использует GHCi.
Вы можете найти его в Hackage и установить с помощью cabal install ansi-terminal. В нем есть функции очистки экрана, отображения цветов, перемещения курсора и т. Д.
Использовать его для очистки экрана очень просто: (это с GHCI)
Это правильный ответ. Однако попробуйте поискать пакет в диспетчере пакетов вашей системы, так как cabal обычно не работает с этим и не предлагает команду удаления.
Evi1M4chine
14
На терминале, который понимает escape-последовательности ANSI (я считаю, что каждый термин в системах Unix / Linux) вы можете сделать это просто с помощью:
clear = putStr "\ESC[2J"
2Очищает весь экран. Вы можете использовать 0или 1соответственно, если хотите очистить от курсора до конца экрана или от курсора до начала экрана.
Однако я не думаю, что это работает в оболочке Windows.
В системах Unix вы можете сделать System.system "clear"это, просто запустив утилиту командной строки clear. Для решения, которое не зависит от внешних инструментов, вам понадобится библиотека, которая абстрагируется от разных типов терминалов, например, от ansi-terminal .
Ответы:
:! запустите команду оболочки
:! 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
.В Windows используйте Ctrl + L для терминала командной строки Haskell. И для GUI использовать Ctrl + S .
источник
В Linux (по крайней мере, в Ubuntu) я использую этот код для очистки терминала:
import qualified System.Process as SP clearScreen :: IO () clearScreen = do _ <- SP.system "reset" return ()
источник