เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | เนื้อหา | ถัดไป>

การย้ายเคอร์เซอร์

สามารถใช้ Escape Code เพื่อวางตำแหน่งเคอร์เซอร์ได้ โดยทั่วไปจะใช้เพื่อแสดงนาฬิกาหรือข้อมูลประเภทอื่นๆ ในตำแหน่งอื่นบนหน้าจอ เช่น ที่มุมด้านบนทุกครั้งที่มีการแจ้ง นี่คือรายการของ Escape Code ที่กำหนดตำแหน่งเคอร์เซอร์:


ตาราง 13-4: ลำดับการหลบหนีของการเคลื่อนไหวของเคอร์เซอร์

Escape Code Action

\033[l;cH เลื่อนเคอร์เซอร์ไปที่ line l และคอลัมน์ c


ภาพ

\033[nA เลื่อนเคอร์เซอร์ขึ้น n เส้น


ภาพ

\033[nB เลื่อนเคอร์เซอร์ลง n เส้น


ภาพ

\033[nC เลื่อนเคอร์เซอร์ไปข้างหน้า n อักขระ


ภาพ

\033[nD เลื่อนเคอร์เซอร์ไปข้างหลัง n อักขระ


ภาพ

\033[2J ล้างหน้าจอและเลื่อนเคอร์เซอร์ไปที่มุมซ้ายบน (บรรทัด 0, คอลัมน์ 0)


ภาพ

\033[K ล้างจากตำแหน่งเคอร์เซอร์ไปยังจุดสิ้นสุดของบรรทัดปัจจุบัน


ภาพ

\033[s เก็บตำแหน่งเคอร์เซอร์ปัจจุบัน


ภาพ

\033[u เรียกคืนตำแหน่งเคอร์เซอร์ที่เก็บไว้


ภาพ


โดยใช้รหัสข้างต้น เราจะสร้างข้อความแจ้งที่วาดแถบสีแดงที่ด้านบนของหน้าจอที่มีนาฬิกา (แสดงเป็นข้อความสีเหลือง) ทุกครั้งที่มีการแสดงข้อความแจ้ง รหัสสำหรับข้อความแจ้งคือสตริงที่ดูน่ากลัวนี้:



PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]

<\u@\h \W>\$ "

PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]

<\u@\h \W>\$ "


ลองดูที่แต่ละส่วนของสตริงเพื่อดูว่ามันทำอะไร:

การย้ายเคอร์เซอร์


ตาราง 13-5: รายละเอียดของสตริงพร้อมท์ที่ซับซ้อน


ลำดับการกระทำ

ลำดับการกระทำ

\[ เริ่มลำดับอักขระที่ไม่พิมพ์ จุดประสงค์คือเพื่อให้ bash สามารถคำนวณขนาดของพรอมต์ที่มองเห็นได้อย่างเหมาะสม หากไม่มีการคำนวณที่แม่นยำ คุณลักษณะการแก้ไขบรรทัดคำสั่งจะไม่สามารถวางตำแหน่งเคอร์เซอร์ได้อย่างถูกต้อง


ภาพ

\033[s เก็บตำแหน่งเคอร์เซอร์ นี่เป็นสิ่งจำเป็นเพื่อกลับไปยังตำแหน่งที่พร้อมท์หลังจากวาดแถบและนาฬิกาที่ด้านบนของหน้าจอแล้ว โปรดทราบว่าเทอร์มินัลอีมูเลเตอร์บางตัวไม่รู้จักรหัสนี้


ภาพ

\033[0;0H เลื่อนเคอร์เซอร์ไปที่มุมซ้ายบน ซึ่งก็คือบรรทัด 0, คอลัมน์ 0


ภาพ

\033[0;41m ตั้งค่าสีพื้นหลังเป็นสีแดง


ภาพ

\033[เค ล้างจากตำแหน่งเคอร์เซอร์ปัจจุบัน (มุมบนซ้าย) ไปจนสุดบรรทัด เนื่องจากตอนนี้สีพื้นหลังเป็นสีแดง เส้นจึงถูกล้างไปยังสีนั้นที่สร้างแถบของเรา โปรดทราบว่าการล้างไปยังจุดสิ้นสุดของบรรทัดจะไม่เปลี่ยนตำแหน่งเคอร์เซอร์ ซึ่งยังคงอยู่ที่มุมซ้ายบน


ภาพ

\033[1;33m ตั้งค่าสีข้อความเป็นสีเหลือง


ภาพ

\t แสดงเวลาปัจจุบัน แม้ว่านี่จะเป็นองค์ประกอบ "การพิมพ์" แต่เรายังคงรวมไว้ในส่วนที่ไม่ได้พิมพ์ของพรอมต์ เนื่องจากเราไม่ต้องการให้ bash รวมนาฬิกาเมื่อคำนวณขนาดที่แท้จริงของพรอมต์ที่แสดง


ภาพ

\033[0m ปิดสี สิ่งนี้มีผลกับทั้งข้อความและพื้นหลัง


ภาพ

\033[u กู้คืนตำแหน่งเคอร์เซอร์ที่บันทึกไว้ก่อนหน้านี้


ภาพ

\] สิ้นสุดลำดับอักขระที่ไม่พิมพ์


ภาพ

<\u@\h \W>\$ สตริงข้อความแจ้ง


ภาพ


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: