Bagaimana cara menghapus layar terminal di Haskell?


93

Bagaimana cara saya menghapus layar terminal setelah pengguna saya memilih opsi dari menu aplikasi saya?


2
Bisakah Anda lebih jelas tentang sistem antarmuka pengguna yang Anda gunakan dalam program Haskell? Apakah maksud Anda Anda hanya membaca dan menulis teks ke stdin / stdout? Jika demikian, mereka tidak memiliki konsep implisit tentang "layar". Jika Anda bermaksud program Anda untuk bekerja dengan asumsi bahwa ada terminal yang terpasang ke stdin / stdout, maka Anda harus mengkodekan program Anda untuk menggunakan beberapa paket kontrol terminal, seperti yang ditunjukkan pada jawaban @ZackS.
MtnViewMark

2
Silakan pilih jawaban yang benar. Orang harus melalui semua jawaban!
Shishir Gupta

Jawaban:


198

:! jalankan perintah shell
:! CLS di bawah jendela
! jelas di bawah linux dan OS X


2
apakah ada lembar contekan untuk ghci?
tugberk

2
@Peter tebakan terbaik saya adalah karena mereka tidak menganggapnya sebagai solusi haskell (memang demikian; ini hanya berfungsi di GHCi), tidak berfungsi untuk mereka (bergantung pada shell) atau mereka hanya menganggap jawaban ZachS lebih baik . :! clscukup memadai untuk kasus penggunaan saya tetapi tidak berfungsi untuk kasus penanya karena penanya tidak menggunakan GHCi.
John Dvorak

58

Inilah yang mungkin Anda cari:

ansi-terminal: Dukungan terminal ANSI sederhana, dengan kompatibilitas Windows

Anda dapat menemukannya di Hackage dan menginstal menggunakan cabal install ansi-terminal. Ini secara khusus memiliki fungsi untuk membersihkan layar, menampilkan warna, menggerakkan kursor, dll.

Menggunakannya untuk membersihkan layar itu mudah: (ini dengan GHCI)

import System.Console.ANSI

clearScreen


4
Ini jawaban yang benar. Cobalah untuk mencari paket di manajer paket sistem Anda, karena komplotan rahasia umumnya tidak bekerja dengan itu dan tidak menawarkan perintah uninstall.
Evi1M4chine

14

Di terminal yang memahami urutan escape ANSI (saya percaya setiap istilah dalam sistem Unix / Linux) Anda dapat melakukannya hanya dengan:

clear = putStr "\ESC[2J"

The 2membersihkan seluruh layar. Anda dapat menggunakan 0atau 1masing - masing jika Anda ingin menghapus dari kursor ke ujung layar atau dari kursor ke awal layar.

Namun saya tidak berpikir ini berfungsi di shell Windows.




5

Cara cepat di Windows adalah dengan

import System.Process

clear :: IO ()
clear = system "cls"

Ini adalah solusi terbersih untuk saya, dan untuk penggunaan sistem Linux system "clear.
Iain J. Reid

5

Di Windows, gunakan Ctrl + L untuk terminal command prompt Haskell. Dan, untuk GUI menggunakan Ctrl + S .


0

Di Linux (setidaknya Ubuntu), itulah kode yang saya gunakan untuk membersihkan terminal:

import qualified System.Process as SP

clearScreen :: IO ()
clearScreen = do
  _ <- SP.system "reset"
  return ()
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.