ฉันจะล้างหน้าจอเทอร์มินัลหลังจากที่ผู้ใช้ของฉันเลือกตัวเลือกจากเมนูแอปพลิเคชันของฉันได้อย่างไร
ฉันจะล้างหน้าจอเทอร์มินัลหลังจากที่ผู้ใช้ของฉันเลือกตัวเลือกจากเมนูแอปพลิเคชันของฉันได้อย่างไร
คำตอบ:
:! รันคำสั่งเชลล์
:! CLS ภายใต้หน้าต่าง
! ชัดเจน ภายใต้ linux และ OS X
:! cls
เพียงพอสำหรับกรณีการใช้งานของฉัน แต่ใช้ไม่ได้กับกรณีของผู้ถามเนื่องจากผู้ถามไม่ได้ใช้ GHCi
นี่คือสิ่งที่คุณอาจกำลังมองหา:
ansi-terminal:รองรับเทอร์มินัล ANSI อย่างง่ายพร้อมความเข้ากันได้ของ Windows
คุณสามารถค้นหาได้ใน Hackagecabal install ansi-terminal
และติดตั้งโดยใช้ มีฟังก์ชั่นเฉพาะสำหรับการล้างหน้าจอการแสดงสีการเลื่อนเคอร์เซอร์ ฯลฯการใช้เพื่อล้างหน้าจอทำได้ง่าย: (ใช้กับ GHCI)
import System.Console.ANSI
clearScreen
บนเทอร์มินัลที่เข้าใจลำดับการหลีกเลี่ยง ANSI (ฉันเชื่อว่าทุกคำในระบบ Unix / Linux) คุณสามารถทำได้ง่ายๆด้วย:
clear = putStr "\ESC[2J"
2
ล้างหน้าจอทั้งหมด คุณสามารถใช้0
หรือ1
ตามลำดับหากคุณต้องการล้างจากเคอร์เซอร์ไปที่ท้ายหน้าจอหรือจากเคอร์เซอร์ไปที่จุดเริ่มต้นของหน้าจอ
อย่างไรก็ตามฉันไม่คิดว่าสิ่งนี้ใช้ได้กับ Windows shell
เพียงกด Ctrl + L (ใช้ได้กับ Windows)
ในระบบ Unix คุณสามารถทำได้System.system "clear"
โดยเรียกใช้ยูทิลิตี้บรรทัดคำสั่งที่ชัดเจน สำหรับการแก้ปัญหาที่ไม่ได้ขึ้นอยู่กับเครื่องมือภายนอกคุณจะต้องห้องสมุดที่แตกต่างกันมากกว่าบทคัดย่อขั้วประเภทอย่างเช่นANSI ขั้ว
วิธีที่รวดเร็วใน 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 ()