如何在bash shell中设置光标颜色[重复]

Posted

技术标签:

【中文标题】如何在bash shell中设置光标颜色[重复]【英文标题】:How to set cursor color in bash shell [duplicate] 【发布时间】:2016-09-30 03:38:04 【问题描述】:

我发现我可以通过在我的 .bashrc 文件中包含以下指令来让光标闪烁:

echo -ne "\x1b[1 q"

但我也想更改闪烁光标的颜色。我知道我的终端支持颜色,因为我可以设置提示颜色并以颜色打印文本,但我无法更改光标颜色。有什么建议吗?

我正在添加以下评论,我知道如何更改终端上显示的文本颜色,但这与更改光标颜色不同。所以that other question 没有解决我的问题。

但我确实在我的终端仿真器软件中找到了一种解决方法,如下所示。 感谢您的反馈,尤其是关于选择正确的转义码可在终端类型之间移植的部分。

【问题讨论】:

旁白:echo -ne 是错误的形式;请考虑printf。请参阅pubs.opengroup.org/onlinepubs/009604599/utilities/echo.html 处的echo 的POSIX 规范——-n 是允许的,但行为未定义,除了在输出上打印文字文本-e 之外,-e 的任何行为都是完全不允许的。虽然 bash 的 echo 默认情况下是不合规的,但它并非总是不合规;例如,设置了xpg_echoposix 选项后,它变得合规,因此不应依赖它偏离的地方。 ...不过,更大的问题是转义码是特定于终端的。您不应该在您的软件或配置中硬编码它们 - 获取它们的正确方法是通过为您当前的 TERM 环境变量查找正确值的代码。 查看echo -e "\e]12;red\a" 同样,您的终端是否支持更改光标颜色是终端特定的,查找特定代码需要知道TERM的实际值。跨度> @MohamedSlama, printf %b '\e]12;red\a',如果你希望它可以移植到不同的 shell。 (它已经不能移植到不同的终端,但是如果不进行 termcap/terminfo 查找,这种便携性是不可能的)。 【参考方案1】:

后来我发现我可以更改光标颜色,不是在 bash 中,而是在终端仿真器程序中。就我而言,该程序是 MobaXTerm。我发现了以下顺序:设置 - 终端 - 光标。此时,选择光标颜色会导致 bash shell 中的光标以所需的颜色显示。所以现在在我在 xterm 窗口的 bash 环境中使用 vim 编辑的文件中,我看到一个闪烁的绿色块光标,这正是我所需要的。

请查看以下演示短片:Blinking Green Block Cursor in bash and vim

实现这一点是我的问题,而不是关于如何在屏幕上显示彩色文本,正如所指出的那样,这已经在其他地方得到了回答。所以我的问题不是重复的。无论如何,事实证明我的 xterm 仿真软件 Mobaxterm 允许我设置光标颜色,而我的 .bashrc 文件中的转义序列允许我让它闪烁。

【讨论】:

有用的链接,以防将来有人需要它:ascii-table.com/ansi-escape-sequences-vt-100.php 粗体序列:freebsd.org/cgi/…bold=`tput smso` offbold=`tput rmso` 【参考方案2】:

不要使用回显转义字符。像这样使用 printf:

printf '%b' '\e]12;red\a'

【讨论】:

这条线对我不起作用。它什么也不打印。

以上是关于如何在bash shell中设置光标颜色[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 GTK+ 3 中设置光标颜色

iOS开发中设置UITextField的占位文字的颜色,和光标的颜色

如何在导航栏中设置后退按钮的色调颜色[重复]

无法在 bash 脚本中设置变量 [重复]

如何将 shell 设置为 bash 以在 Capistrano 中运行?

如何在bash中设置时间,重启后不会改变?