ฉันจะทำให้เคอร์เซอร์หยุดblinking
เมื่ออยู่ในTTY ได้อย่างไร (หรือที่อื่น ๆ )
คะแนนโบนัสสำหรับการตั้งค่าสากลหนึ่งรายการที่หยุดเคอร์เซอร์กะพริบเกือบทุกที่
ฉันจะทำให้เคอร์เซอร์หยุดblinking
เมื่ออยู่ในTTY ได้อย่างไร (หรือที่อื่น ๆ )
คะแนนโบนัสสำหรับการตั้งค่าสากลหนึ่งรายการที่หยุดเคอร์เซอร์กะพริบเกือบทุกที่
คำตอบ:
สิ่งนี้ทำให้คุณมีบล็อกสีเหลืองทึบ (ไม่กะพริบ) เป็นเคอร์เซอร์:
echo -n -e '\e[?17;14;224c'
สำหรับข้อมูลเพิ่มเติมตรวจสอบข้อมูลอ้างอิงเหล่านี้: LinuxgazetteและEmacsWikiรวมถึงไฟล์/usr/src/linux/Documentation/VGA-softcursor.txt
(หากมีอยู่ในระบบของคุณ)
echo -e '\033[?16;0;224c'
มีลำดับการควบคุมมาตรฐานเพื่อปิดเคอร์เซอร์กะพริบที่อาคาร
printf '\033[?12l'
อย่างไรก็ตามเทอร์มินัลจำนวนมากไม่ใช้การตั้งค่านี้ดังนั้นโปรดอ่านต่อ
มีการตั้งค่าเทอร์มินัลมาตรฐานที่ใช้กันอย่างแพร่หลายมากขึ้นสำหรับการสลับการมองเห็นเคอร์เซอร์ระหว่างการมองเห็นสูงการมองเห็นปกติและการล่องหน เทอร์มินัลบางตัวไม่สร้างความแตกต่างระหว่างปกติและสูงและไม่มีการรับประกันว่าอย่างใดอย่างหนึ่งจะหรือจะไม่กระพริบตา ในterminfo , ปล่อยcvvis
, cnorm
หรือcivis
สตริง (เช่นtput cvvis
) ที่สอดคล้องtermcapรายการมีvs
, และve
vi
การตั้งค่าเหล่านี้จะไม่สามารถรีเซ็ตเทอร์มินัลได้ดังนั้นคุณอาจพบว่ามันไม่รอดจากการเปิดตัวแอปพลิเคชั่นเต็มหน้าจอจำนวนมาก คุณสามารถเอาชนะความยากลำบากนี้ได้โดยการเพิ่มลำดับการเปลี่ยนการกำหนดค่าเคอร์เซอร์ลงในสตริงรีเซ็ตเทอร์มินัลของคุณ
infocmp >>~/etc/terminfo.txt
ตั้งค่าไปยังไฟล์ที่มี แก้ไขคำอธิบายในการเปลี่ยนแปลงrs1
(ตั้งค่าพื้นฐาน) ลำดับเช่นแทนที่โดยrs1=\Ec
rs1=\Ec\E[?12l
ในบางโปรแกรมและการตั้งค่าคุณอาจต้องเปลี่ยนrs2
(รีเซ็ตแบบเต็ม) เช่นกัน จากนั้นคอมไพล์คำอธิบาย terminfo ด้วยtic ~/etc/terminfo.txt
(สิ่งนี้เขียนภายใต้ไดเร็กทอรี$TERMINFO
หรือ~/.terminfo
ถ้าไม่ได้ตั้งค่า)/etc/termcap
) เปลี่ยนis
(ตั้งค่าพื้นฐาน) และrs
(รีเซ็ตเต็ม) :is=\Ec\E[?12l:
ลำดับที่จะผนวกการตั้งค่าของคุณเช่น ตั้งค่าTERMCAP
ตัวแปรสภาพแวดล้อมเป็นค่าที่แก้ไข (เริ่มต้นและลงท้ายด้วย:
)เทอร์มินัลและแอปพลิเคชั่นอื่น ๆ บางตัวมีตัวเลือกเพิ่มเติมให้คุณ:
cursorBlink
ทรัพยากรที่มีการตั้งค่าtrue
หรือ-bc
ตัวเลือกที่ถูกส่งผ่านในบรรทัดคำสั่ง อัตราการกะพริบสามารถปรับแต่งได้ผ่านทางcursorOnTime
และcursorOffTime
ทรัพยากรprintf '\033[17;127?c'
(พารามิเตอร์แรก 17 ให้เคอร์เซอร์ซอฟต์แวร์โดยไม่มีเคอร์เซอร์ฮาร์ดแวร์และพารามิเตอร์ตัวที่สองตั้งไว้ที่ 127 ทำให้วิดีโอเป็นวิดีโอผกผัน) ดูด้านบนเกี่ยวกับการรีเซ็ตเทอร์มินัลM-x blink-cursor-mode
สลับกระพริบของเคอร์เซอร์ ใส่(blink-cursor-mode 0)
ในของคุณ~/.emacs
เพื่อปิด นี่เป็นการตั้งค่าส่วนกลางและไม่ได้ใช้ในเทอร์มินัลข้อความดูหน้าไม่มีการกะพริบของ Juri Linkov (Jurta)สำหรับวิธีปิดการกะพริบใน Lesstif, Tk, Gtk (Gnome), Qt (KDE), Firefox และอีกมากมาย
ฉันพบสิ่งนี้จะง่ายขึ้นถ้าคุณมีสิทธิ์ใช้งานรูท:
~$ echo 0 > /sys/class/graphics/fbcon/cursor_blink
ฉันใส่ไว้ในสคริปต์เริ่มต้นของเครื่องเช่น/etc/rc.local
สำหรับ linux arch
ใน linux tty คุณสามารถใช้ escape sequence "\e[?48;0;64"
หรืออะไรก็ได้ที่คุณชอบ แต่มันไม่ทำงานใน tmux / vim Tmux / กลุ่มออกคำสั่ง "cnorm" "\e[?0c"
ในการเริ่มต้นซึ่งเริ่มต้นโดยมี คุณสามารถเห็นได้ว่าสิ่งนี้จะยกเลิกผลกระทบของการตั้งค่าข้างต้น คุณต้องเปลี่ยน cnorm เป็นลำดับข้างต้นเพื่อให้แอปพลิเคชัน TUI รีเซ็ตเคอร์เซอร์ตามที่คุณต้องการ ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้โดย Gilles แต่ถ้าคุณกำลังมองหาวิธีแก้ไขปัญหาอย่างรวดเร็วลองทำสิ่งนี้:
infocmp linux > /tmp/linux-terminfo
# Replace the last escape sequence here with your colors and settings
sed -i 's/cnorm=\\E\[?25h\\E\[?0c/cnorm=\\E[?25h\\E?48;0;64c/' /tmp/linux-terminfo
tic /tmp/linux-terminfo
คำสั่งสุดท้ายจะสร้าง terminfo ใหม่ภายใต้~/.terminfo
ซึ่งควรเลือกโดยอัตโนมัติหากคุณรีสตาร์ท tmux server / vim
ใส่
\ 033 [17; 0; 127c
กับตัวแปร PS1 ของคุณและคุณจะหยุดกระพริบอย่างต่อเนื่อง
เช่น:
ส่งออก PS1 = '\ 033 [? 17; 0; 127c \ u: \ w \ $'
BLUEBOXNOBLINK="\033[?17;0;60c"
นั้นPS1="\[$BLUEBOXNOBLINK\]\[$BROWN\]\u \[$CYAN\]\W: \[$NC\]"
sudo cp /etc/issue /etc/issue.tmp
setterm -cursor off | sudo tee /etc/issue
cat /etc/issue.tmp | sudo tee --append /etc/issue
sudo rm /etc/issue.tmp
sudo reboot
-cursor off
ไม่ได้ค่อนข้างสิ่งที่จะถามหาที่ทุกคนก็จะทำให้เคอร์เซอร์หายไป ... setterm -blink off
ดูเหมือนว่ามีแนวโน้มมากขึ้น แต่มันมีผลต่อข้อความไม่เคอร์เซอร์ที่เกิดขึ้นจริง
setterm -cursor off; setterm -cursor on
ทำงานที่นี่ แต่มันเป็นวิธีแก้ปัญหาที่ยอมรับไม่ได้
ฉันใส่
echo 0 > /sys/class/graphics/fbcon/cursor_blink
ใน /etc/rc.local และสร้างบริการ systemd สำหรับมันโดยใช้คำแนะนำออนไลน์ อย่างไรก็ตามฉันสังเกตเห็นว่าบางครั้งหลังจากบูตเคอร์เซอร์ยังคงกะพริบอยู่ มันเป็นการดีที่จะรู้ว่าวิธีที่ถูกต้องในการปิดเคอร์เซอร์กะพริบอย่างถาวรผ่าน sysfs บนระบบ systemd ที่ทันสมัยไม่มีใครมีเคล็ดลับหรือไม่? บางดิสทริบิวชันมี /etc/sysfs.conf แต่ฉันกำลังใช้งาน Arch และไม่พบไฟล์นี้ใน sysfsutils หรือที่อื่น ๆ
เป็นการแก้ไขชั่วคราวฉันวิ่งคำสั่งต่อไปนี้
sudo zsh -c 'echo -n "\033[?17;0;255c" >> /etc/issue'
การทดลองบางอย่างแสดงให้เห็นว่า '255c' ในตอนท้ายทำงานได้ดีกว่า '127c' ที่ระบุไว้ด้านบนมันสร้างเคอร์เซอร์สีขาวมากกว่าเคอร์เซอร์สีเทา
สำหรับคอนโซล Linux:
เพิ่ม-I "\033[?17;0;255c"
ตัวเลือกให้กับgetty
บรรทัดใน/etc/inittab
ไฟล์ของคุณ โดยทำดังนี้
เปิด/etc/inittab
ไฟล์ด้วยโปรแกรมแก้ไขข้อความ ควรจะมีเส้นที่มีgetty
หรือagetty
หรือคล้ายกัน ตัวอย่างคือ:
tty1::respawn:/sbin/getty 38400 tty1
เพิ่ม-I "\033[?17;0;255c"
ในแต่ละgetty
บรรทัด ตัวอย่างเช่นหลังจากที่เพิ่ม-I "\033[?17;0;255c"
ที่getty
สายดังกล่าวข้างต้นจะมีลักษณะดังต่อไปนี้:
tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
รีบูทระบบหรือมิฉะนั้นให้ทำลายgetty
กระบวนการทั้งหมด
ทางเลือกที่ดีกว่าคือการใส่ESC[?17;0;255c
ใน/etc/issue
แทนการวางgetty
สาย การทำสิ่งนี้โดยใช้vi
มีดังนี้:
/etc/issue
vi
/etc/issue
ไฟล์เข้าสู่โหมดแทรก^V
(นั่นคือCtrlv) Escแล้วกด ตอนนี้ควรแทรกอักขระหลีกเลี่ยง[?17;0;255c
ตอนนี้ใส่ตัวอักษรที่เหลือซึ่งเป็นอีกทางเลือกหนึ่งคือการรักษาเคอร์เซอร์ฮาร์ดแวร์ (แทนที่จะใช้เคอร์เซอร์ซอฟต์แวร์) และหยุดกระพริบเคอร์เซอร์ฮาร์ดแวร์และทำให้เคอร์เซอร์บล็อก โดยทำดังนี้
เพิ่มรายการต่อไปนี้ใน/etc/inittab
:
# Stop cursor blink on Linux console
::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
เพิ่มไปESC[?8c
/etc/issue
อ้างถึง "ทางเลือก 2" สำหรับคำแนะนำในการทำเช่นนี้
อย่างไรก็ตามด้วยตัวเลือกนี้เคอร์เซอร์จะไม่กลายเป็นสีขาวสว่าง ฉันเดาว่านี่เป็นไปได้เฉพาะเมื่อใช้เคอร์เซอร์ซอฟต์แวร์
หลังจากทำตามตัวเลือกใด ๆ เหล่านี้คุณจะได้เคอร์เซอร์บล็อกสีขาวไม่มีการกะพริบ
ซึ่งจะเป็นการซ่อนเคอร์เซอร์อย่างสมบูรณ์
tput civis
หากต้องการ retore:
tput cnorm