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.