【问题标题】:How to set cursor color in bash shell [duplicate]如何在bash shell中设置光标颜色[重复]
【发布时间】: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 查找,这种便携性是不可能的)。

标签: bash


【解决方案1】:

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

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

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • 这条线对我不起作用。它什么也不打印。
猜你喜欢
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 2015-05-23
  • 2015-09-06
  • 1970-01-01
  • 2015-02-28
  • 2023-03-08
相关资源
最近更新 更多