Answers:
这为您提供了一个稳定的黄色块(不闪烁)作为光标:
echo -n -e '\e[?17;14;224c'
有关更多信息,请检查以下参考:Linuxgazette和EmacsWiki以及文件/usr/src/linux/Documentation/VGA-softcursor.txt(如果系统中存在)
echo -e '\033[?16;0;224c'
有一个标准的控制序列可以关闭终端上的光标闪烁。
printf '\033[?12l'
但是,许多终端不执行此设置,因此请继续阅读。
有一个更广泛实施的标准终端设置,用于在高可见性,正常可见性和不可见性之间切换光标可见性。有些端子在正常和高电平之间没有区别,并且不能保证一个或另一个会闪烁或不会闪烁。在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 )的“无闪烁”页,了解如何在Lesstif,Tk,Gtk(Gnome),Qt(KDE),Firefox等中关闭闪烁。
在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下自动进行拾取。
放
\ 033 [?17; 0; 127c
到PS1变量,您将停止不断闪烁。
例如:
export PS1 ='\ 033 [?17; 0; 127c \ u:\ w \ $'
BLUEBOXNOBLINK="\033[?17;0;60c",然后PS1="\[$BLUEBOXNOBLINK\]\[$BROWN\]\u \[$CYAN\]\W: \[$NC\]"
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
-cursor off是不是很什么要求的话,那将光标消失...... setterm -blink off似乎更有前途,但它影响文本,而不是实际的光标。
setterm -cursor off; setterm -cursor on确实可以在这里工作,但这是不可接受的解决方法
我放
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”更好,它产生的是白色而不是灰色的光标。
对于Linux控制台:
在文件的行中添加-I "\033[?17;0;255c"选项。为此:getty/etc/inittab
/etc/inittab使用文本编辑器打开文件。应该有包含线getty或agetty或相似。一个例子是:
tty1::respawn:/sbin/getty 38400 tty1
添加-I "\033[?17;0;255c"到每一getty行。例如,添加之后-I "\033[?17;0;255c",getty上面的行将如下所示:
tty1::respawn:/sbin/getty -I "\033[?17;0;255c" 38400 tty1
重新启动系统,或者终止所有getty进程。
更好的选择是把ESC[?17;0;255c中/etc/issue,而不是把它getty行。使用vi方法如下:
/etc/issue使用打开vi。/etc/issue文件的任何位置,进入插入模式。^V(即Ctrlv),然后按Esc。现在应该插入转义字符。[?17;0;255c。另一种选择是保留硬件游标(而不是使用软件游标),并停止硬件游标的闪烁并使其成为块游标。为此:
将以下内容添加到/etc/inittab:
# Stop cursor blink on Linux console
::sysinit:/bin/sh -c "echo 0 > /sys/class/graphics/fbcon/cursor_blink"
添加ESC[?8c到/etc/issue。有关执行此操作的说明,请参阅“替代2”。
但是,使用此选项,光标不会变为亮白色。我猜这只能通过使用软件光标来实现。
遵循上述任何一种方法之后,您将获得一个白色的,不闪烁的块状光标。