Як очистити екран терміналу після того, як користувач вибрав опцію в меню моєї програми?
Як очистити екран терміналу після того, як користувач вибрав опцію в меню моєї програми?
Відповіді:
:! запустіть команду оболонки
:! ЦБС під вікнами
! ясно під Linux та OS X
:! cls
достатньо для мого випадку використання, але не працює для випадку учасника запиту, оскільки той, хто використовує запит, не використовує GHCi.
Це те, що ви можете шукати:
ansi-terminal: Проста підтримка терміналу ANSI із сумісністю з Windows
Ви можете знайти його в Hackage і встановити за допомогоюcabal install ansi-terminal
. Він спеціально має функції очищення екрана, відображення кольорів, переміщення курсору тощо.Використовувати його для очищення екрану просто: (це стосується GHCI)
import System.Console.ANSI
clearScreen
На терміналі, який розуміє послідовності виходу ANSI (я вважаю, кожен термін в системах Unix / Linux), ви можете зробити це просто за допомогою:
clear = putStr "\ESC[2J"
2
Очищає весь екран. Ви можете використовувати 0
або, 1
відповідно, якщо ви хочете очистити від курсору до кінця екрана або від курсору до початку екрана.
Однак я не думаю, що це працює в оболонці Windows.
Просто натисніть Ctrl + L (працює в Windows)
У системах Unix ви можете робити це, System.system "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 ()