Tty

如何阻止游標閃爍

  • October 25, 2021

blinkingTTY中如何使游標停止?(或其他任何地方)。

一種通用設置的獎勵積分,幾乎可以在任何地方停止游標閃爍。

這會給你一個純黃色塊(不閃爍)作為游標:

echo -n -e '\e[?17;14;224c'

有關更多資訊,請查看以下參考資料:LinuxgazetteEmacsWiki以及文件/usr/src/linux/Documentation/VGA-softcursor.txt(如果您的系統上存在)

有一個標準控制序列可以關閉終端上的游標閃爍。

printf '\033[?12l'

然而,許多終端沒有實現這個設置,所以請繼續閱讀。

有一個更廣泛實施的標準終端設置,用於在高可見性、正常可見性和不可見性之間切換**游標可見性。**一些終端在正常和高之間沒有區別,並且不能保證其中一個或另一個會或不會閃爍。在terminfo中,發出cvvis,cnormcivis字元串(例如[tput](http://invisible-island.net/ncurses/man/tput.1.html) cvvis)。對應的termcap條目vs和。ve``vi

這些設置將無法在終端重置後保留,因此您可能會發現它無法在許多全屏應用程序啟動後保留。您可以通過將游標配置更改序列添加到終端的重置字元串來克服這個困難。

  • 在使用 ncurses 的基於 terminfo 的系統上,將終端的 terminfo 設置保存到帶有infocmp >>~/etc/terminfo.txt. 編輯描述以更改rs1(基本重置)順序,例如替換rs1=\Ecrs1=\Ec\E[?12l。對於某些程序和設置,您可能還需要更改rs2(完全重置)。tic ~/etc/terminfo.txt然後用(這寫在目錄下$TERMINFO,或者~/.terminfo如果未設置)編譯 terminfo 描述。或者更自動:
infocmp -1 | sed '/^.rs[12]=/ s/,$/\\E[?12l,/' | tic -
  • 在基於 termcap 的系統上,從您的 termcap 數據庫中獲取 termcap 設置(通常是/etc/termcap)。更改is(基本重置)和rs(完全重置)序列以附加您的設置,例如:is=\Ec\E[?12l:. 將TERMCAP環境變數設置為編輯後的值(以 開頭和結尾:)。

一些終端和其他應用程序為您提供了更多選擇:

  • 如果資源設置為或在命令行上傳遞了選項,xterm游標會閃爍。眨眼率可通過和資源進行自定義。cursorBlink``true``-bc``cursorOnTime``cursorOffTime
  • 其他一些 GUI 終端仿真器可以使游標閃爍;檢查他們的配置對話框。
  • Linux PC ( VGA) 控制台有許多游標設置;它們的確切含義和適用性取決於底層 VGA 實現(Linux 幀緩衝區或影片卡)。如果您的預設游標閃爍,請嘗試關閉硬體游標並打開軟體游標printf '\033[17;127?c'(第一個參數 17 為您提供沒有硬體游標的軟體游標,第二個參數設置為 127 使其本質上是反影片)。有關終端重置,請參見上文。
  • Emacs中,M-x blink-cursor-mode切換游標的閃爍。放入(blink-cursor-mode 0)~/.emacs的關閉它。這是一個全域設置,不適用於文本終端。

另請參閱Juri Linkov (Jurta) 的 No Blinking 頁面,了解如何在 Lesstif、Tk、Gtk (Gnome)、Qt (KDE)、Firefox 等中關閉閃爍。

引用自:https://unix.stackexchange.com/questions/3759