Gil*_*il' 29
有一个标准的控制序列来关闭终端上的光标闪烁。
printf '\033[?12l'
Run Code Online (Sandbox Code Playgroud)
然而,许多终端没有实现这个设置,所以请继续阅读。
有一个更广泛实施的标准终端设置,用于在高可见性、正常可见性和不可见性之间切换光标可见性。有些终端在正常和高之间没有区别,并且不能保证其中一个会或不会闪烁。在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)获取 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 ) 的 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)
有关更多信息,请查看这些参考资料:Linuxgazette和EmacsWiki以及文件/usr/src/linux/Documentation/VGA-softcursor.txt(如果您的系统上存在)
小智 17
如果您有 root 权限,我发现这会更容易:
~$ echo 0 > /sys/class/graphics/fbcon/cursor_blink
Run Code Online (Sandbox Code Playgroud)
我把它放在机器启动脚本中,比如/etc/rc.localarch linux。
这完全隐藏了光标。
tput civis
Run Code Online (Sandbox Code Playgroud)
恢复:
tput cnorm
Run Code Online (Sandbox Code Playgroud)
在 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应自动选择其下。