如何阻止光标闪烁

Ste*_*fan 25 tty

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

一项通用设置的奖励积分,该设置几乎可以在任何地方停止光标闪烁。

Gil*_*il' 29

有一个标准的控制序列来关闭终端上的光标闪烁。

printf '\033[?12l'
Run Code Online (Sandbox Code Playgroud)

然而,许多终端没有实现这个设置,所以请继续阅读。

有一个更广泛实施的标准终端设置,用于在高可见性、正常可见性和不可见之间切换光标可见性。有些终端在正常和高之间没有区别,并且不能保证其中一个会或不会闪烁。在terminfo 中,发出cvvis,cnormcivis字符串(例如tput cvvis)。相应的termcap条目是vsvevi

这些设置不会在终端重置后继续存在,因此您可能会发现它在许多全屏应用程序启动后也不会存在。您可以通过将光标配置更改序列添加到终端的重置字符串来克服这个困难。

  • 在使用 ncurses 的基于 terminfo 的系统上,将终端的 terminfo 设置保存到扩展名为infocmp >>~/etc/terminfo.txt. 编辑描述以更改rs1(基本重置)序列,例如替换rs1=\Ecrs1=\Ec\E[?12l。对于某些程序和设置,您可能还需要更改rs2(完全重置)。然后编译 terminfo 描述tic ~/etc/terminfo.txt(这写在目录下$TERMINFO,或者~/.terminfo如果未设置)。
  • 在基于 termcap 的系统上,从 termcap 数据库(通常为/etc/termcap)获取 termcap 设置。更改is(基本重置)和rs(完全重置)序列以附加您的设置,例如:is=\Ec\E[?12l:. 将TERMCAP环境变量设置为编辑后的值(以 开头和结尾:)。

一些终端和其他应用程序为您提供更多选择:

  • xterm的光标闪烁,如果cursorBlink资源设置为true-bc选项,在命令行上通过。闪烁率可通过cursorOnTimecursorOffTime资源进行自定义。
  • 其他一些 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 等中关闭闪烁。


tan*_*nte 18

这为您提供了一个纯黄色块(不闪烁)作为光标:

echo -n -e '\e[?17;14;224c'
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看这些参考资料:LinuxgazetteEmacsWiki以及文件/usr/src/linux/Documentation/VGA-softcursor.txt(如果您的系统上存在)

  • 这对我有用,直到我使用 vim,然后当我退出时光标又回到闪烁:( (3认同)

小智 17

如果您有 root 权限,我发现这会更容易:

~$ echo 0 > /sys/class/graphics/fbcon/cursor_blink
Run Code Online (Sandbox Code Playgroud)

我把它放在机器启动脚本中,比如/etc/rc.localarch linux。


NVR*_*VRM 9

这完全隐藏了光标。

tput civis
Run Code Online (Sandbox Code Playgroud)

恢复:

tput cnorm
Run Code Online (Sandbox Code Playgroud)


yps*_*psu 7

在 linux tty 中,您可以使用转义序列"\e[?48;0;64c"或任何您喜欢的东西,但这在 tmux/vim 中不起作用。Tmux/Vim 在启动时发出“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
Run Code Online (Sandbox Code Playgroud)

~/.terminfo如果您重新启动 tmux 服务器/vim ,最后一个命令将生成新的 terminfo应自动选择其下。