Haskell'de terminal ekranını nasıl temizlerim?


93

Kullanıcım uygulama menüsünden bir seçenek seçtikten sonra bir terminal ekranını nasıl temizleyebilirim?


2
Haskell programınızda hangi kullanıcı arayüz sistemini kullandığınız konusunda daha net olabilir misiniz? Sadece stdin / stdout'a metin okuduğunuzu ve yazdığınızı mı söylüyorsunuz? Eğer öyleyse, bunların örtük bir "ekran" kavramı yoktur. Programınızın stdin / stdout'a bağlı bir uçbirim olduğunu varsayarak çalışmasını düşünüyorsanız, programınızı @ZackS'in yanıtı gibi bazı uçbirim denetim paketini kullanacak şekilde kodlamalısınız.
MtnViewMark

2
Lütfen doğru cevabı seçin. İnsanlar tüm cevapları gözden geçirmek zorunda!
Shishir Gupta

Yanıtlar:


198

:! kabuk komutunu çalıştır
:! cls pencerelerin altında
:! linux ve OS X altında temizle


2
ghci için hile sayfası var mı?
tugberk

2
@Peter en iyi tahminim, bunun bir haskell çözümü olduğunu düşünmedikleri için (haklı olarak; sadece GHCi'de çalışıyor), onlar için işe yaramıyor (kabuğa bağlı) veya sadece ZachS'in cevabını daha iyi görüyorlar. . :! clsbenim kullanım durumum için yeterli, ancak soruyu soran kişi GHCi kullanmadığından sorucunun durumu için çalışmıyor.
John Dvorak

58

Aradığınız şey bu olabilir:

ansi-terminal: Windows uyumluluğu ile basit ANSI terminal desteği

Hackage'da bulabilir ve kullanarak yükleyebilirsiniz cabal install ansi-terminal. Özellikle ekranı temizleme, renkleri görüntüleme, imleci hareket ettirme vb. İşlevlere sahiptir.

Ekranı temizlemek için kullanmak kolaydır: (bu GHCI ile)

import System.Console.ANSI

clearScreen


4
Bu doğru cevap. Paketi sisteminizin paket yöneticisinde aramaya çalışın, çünkü cabal genellikle bununla çalışmaz ve bir kaldırma komutu sunmaz.
Evi1M4chine

14

ANSI kaçış dizilerini anlayan bir terminalde (Unix / Linux sistemlerindeki her terime inanıyorum) bunu basitçe aşağıdakilerle yapabilirsiniz:

clear = putStr "\ESC[2J"

2Tüm ekranı temizler. Kullanabilirsiniz01İmleçten ekranın sonuna veya imleçten ekranın başına kadar temizlemek isterseniz sırasıyla veya tuşlarını .

Ancak bunun Windows kabuğunda çalıştığını düşünmüyorum.



8

Unix sistemlerinde, System.system "clear"sadece komut satırı yardımcı programını temizleyen yapabilirsiniz. Harici araçlara bağlı olmayan bir çözüm için, örneğin ansi-terminal gibi farklı terminal türlerini özetleyen bir kitaplığa ihtiyacınız vardır .


8
@Pradeep: Evet ve haskell'de cevap verdim.
sepp2k

8
@Pradeep: Bağırmanıza gerek yok. (Bkz. En.wikipedia.org/wiki/All_caps#Internet )
Jared Updike

5

Windows'ta hızlı bir yol,

import System.Process

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

Bu benim için ve Linux sistemleri kullanımı için en temiz çözümdü system "clear.
Iain J. Reid

5

Windows'ta Haskell komut istemi terminali için Ctrl + L tuşlarını kullanın . Ve GUI için Ctrl + S kullanın .


0

Linux altında (en azından Ubuntu), terminali temizlemek için kullandığım kod bu:

import qualified System.Process as SP

clearScreen :: IO ()
clearScreen = do
  _ <- SP.system "reset"
  return ()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.