如何让光标停止闪烁

如何让光标停止闪烁

如何让光标blinking电传打字机? (或其他任何地方)。

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

答案1

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

printf '\033[?12l'

然而,许多终端不实现此设置,因此请继续阅读。

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

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

  • 在使用 ncurses 的基于 terminfo 的系统上,将终端的 terminfo 设置保存到扩展名为 .terminfo 的文件中infocmp >>~/etc/terminfo.txt。编辑描述以更改rs1(基本重置)顺序,例如替换rs1=\Ecrs1=\Ec\E[?12l。对于某些程序和设置,您可能还需要更改rs2(完全重置)。然后编译 terminfo 描述tic ~/etc/terminfo.txt(这写在目录下$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在命令行上传递选项,则光标会闪烁。闪烁率可通过cursorOnTimecursorOffTime资源进行定制。
  • 其他一些 GUI 终端模拟器可以使光标闪烁;检查他们的配置对话框。
  • Linux PC (VGA) 控制台有多种光标设置;它们的确切含义和适用性取决于底层 VGA 实现(Linux 帧缓冲区或视频卡)。如果您的默认光标闪烁,请尝试使用类似的命令关闭硬件光标并打开软件光标printf '\033[17;127?c'(第一个参数 17 为您提供没有硬件光标的软件光标,第二个参数设置为 127 使其本质上是反相视频)。请参阅上文有关终端重置的内容。
  • EmacsM-x blink-cursor-mode切换光标的闪烁。输入(blink-cursor-mode 0)您的~/.emacs以将其关闭。这是全局设置,不适用于文本终端。

也可以看看尤里·林科夫(Jurta) 的不眨眼页面了解如何在 Lesstif、Tk、Gtk (Gnome)、Qt (KDE)、Firefox 等中关闭闪烁。

答案2

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

~$ echo 0 > /sys/class/graphics/fbcon/cursor_blink

我把它放在机器启动脚本中,就像/etc/rc.localarch linux 一样。

答案3

这将为您提供一个实心黄色块(不闪烁)作为光标:

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

欲了解更多信息,请查看这些参考资料:Linux公报Emacs维基以及文件/usr/src/linux/Documentation/VGA-softcursor.txt(如果您的系统上存在)

答案4

在 linux tty 中,您可以使用转义序列"\e[?48;0;64c"或任何您喜欢的内容,但这在 tmux/vim 中不起作用。

Tmux/Vimcnorm在启动时发出一个命令,默认情况下包含一个"\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 服务器/vim,应自动获取该 terminfo。

相关内容