如何停止光标闪烁


22

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

一项通用设置的奖励点,使光标几乎在所有位置都停止闪烁。

Answers:


17

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

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

有关更多信息,请检查以下参考:LinuxgazetteEmacsWiki以及文件/usr/src/linux/Documentation/VGA-softcursor.txt(如果系统中存在)


这对我一直有效,直到我使用vim,然后当我退出时光标又回到闪烁了:(
mulllhausen 2013年

这为您提供了一个不闪烁的纯白色块echo -e '\033[?16;0;224c'
Utku

thx,我可以将最后一个数字(224)更改为244,以获得纯白色块:)

我对在Arch Linux上运行bash 5.0.11的系统没有任何影响
S.Goswami

26

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

printf '\033[?12l'

但是,许多终端不执行此设置,因此请继续阅读。

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

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

  • 在使用ncurses的基于terminfo的系统上,使用将终端的terminfo设置保存到文件中infocmp >>~/etc/terminfo.txt。编辑说明改变rs1(基本复位)序列,例如替换rs1=\Ec通过rs1=\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 )的“无闪烁”页,了解如何在Lesstif,Tk,Gtk(Gnome),Qt(KDE),Firefox等中关闭闪烁。


14

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

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

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


5

在Linux tty中,您可以使用转义序列"\e[?48;0;64"或任何您喜欢的方法,但这在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

最后一条命令将生成新的terminfo ~/.terminfo,如果重新启动tmux server / vim,将在该新的terminfo下自动进行拾取。


3

\ 033 [?17; 0; 127c

到PS1变量,您将停止不断闪烁。

例如:

export PS1 ='\ 033 [?17; 0; 127c \ u:\ w \ $'


1
这将(至少对我而言)使接线中断(在线溢出)更加严重。使用方括号,转义:例如BLUEBOXNOBLINK="\033[?17;0;60c",然后PS1="\[$BLUEBOXNOBLINK\]\[$BROWN\]\u \[$CYAN\]\W: \[$NC\]"
Emanuel Berg 2012年

0
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

如果作者没有忘记解释它,这是一个很棒的解决方案,并且可能会有很多反对意见……:-)
彼得说恢复莫妮卡2014年

1
-cursor off是不是什么要求的话,那将光标消失...... setterm -blink off似乎更有前途,但它影响文本,而不是实际的光标。
mr.spuratic

setterm -cursor off; setterm -cursor on确实可以在这里工作,但这是不可接受的解决方法
Thor

0

我放

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

在/etc/rc.local中,并使用在线说明为其创建了systemd服务。但是,我注意到有时启动后光标仍然闪烁。最好了解在现代systemd系统上通过sysfs永久关闭光标闪烁的正确方法,有人有什么建议吗?有些发行版具有/etc/sysfs.conf,但我正在运行Arch,并且在sysfsutils或其他地方找不到此文件。

作为临时修复,我运行了以下命令

sudo zsh -c 'echo -n "\033[?17;0;255c" >> /etc/issue'

一些实验表明,最后的“ 255c”比上面列出的“ 127c”更好,它产生的是白色而不是灰色的光标。


0

对于Linux控制台:

选择1

在文件的行中添加-I "\033[?17;0;255c"选项。为此:getty/etc/inittab

  1. /etc/inittab使用文本编辑器打开文件。应该有包含线gettyagetty或相似。一个例子是:

    tty1::respawn:/sbin/getty 38400 tty1
    
  2. 添加-I "\033[?17;0;255c"到每一getty行。例如,添加之后-I "\033[?17;0;255c"getty上面的行将如下所示:

    tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
    
  3. 重新启动系统,或者终止所有getty进程。

选择2

更好的选择是把ESC[?17;0;255c/etc/issue,而不是把它getty行。使用vi方法如下:

  1. /etc/issue使用打开vi
  2. /etc/issue文件的任何位置,进入插入模式。
  3. 在插入模式下,按^V(即Ctrlv),然后按Esc。现在应该插入转义字符。
  4. 现在,插入剩余的字符[?17;0;255c

选择3

另一种选择是保留硬件游标(而不是使用软件游标),并停止硬件游标的闪烁并使其成为块游标。为此:

  1. 将以下内容添加到/etc/inittab

    # Stop cursor blink on Linux console
    ::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
    
  2. 添加ESC[?8c/etc/issue。有关执行此操作的说明,请参阅“替代2”。

但是,使用此选项,光标不会变为亮白色。我猜这只能通过使用软件光标来实现。

遵循上述任何一种方法之后,您将获得一个白色的,不闪烁的块状光标。

更多信息


0

这将完全隐藏光标。

tput civis

重演:

tput cnorm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.