有没有办法确定光标在运行像vim这样的终端中的颜色是什么?我知道您可以使用tput cols
和tput rows
来确定终端的高度和宽度,是否有类似的光标颜色工具/获取当前任何字符位置的ansi标准前景/背景颜色终端
答案 0 :(得分:1)
你的问题的答案是“不,没有标准的方法来做到这一点。”
考虑到您的终端是在古代文本终端(如DEC VT100之类)之后建模的,它通过串行端口或调制解调器与服务器通信。而这些终端又是在20世纪60年代连接到计算机的TeleTYpe(tty)设备之后建模的。
电传打字机(“哑”终端)没有向没有输入键盘的服务器提供数据。像VT100这样的设备(“智能”终端)为服务器提供了很少的功能,但是可用的列表多年来没有改变。
其他资源:
请注意,并非所有终端都是VT100 / VT220,并且您的系统可能具有以非标准方式提供所需内容的locak扩展。
如需额外阅读,请查看man termcap
和man terminfo
。查看这些页面的“另请参见”部分中的参考文献。
答案 1 :(得分:1)
简答:没有
答案很长:如果广泛使用该功能将是tput
的另一项功能,它允许您检索脚本的任何终端功能。这些内容记录在terminfo manual页面中。这些都不涉及光标颜色,只处理(相当模糊)cvvis
(非常明显),cnorm
(正常)和civis
(不可见)光标属性。
也就是说,大多数终端都没有
xterm是一个罕见的例外,提供两者。但是在模仿xterm的终端中通常不支持该功能。它在XTerm Control Sequences中作为dynamic colors功能的一部分进行了记录:
OSC Ps ; Pt ST
OSC Ps ; Pt BEL
Set Text Parameters. For colors and font, if Pt is a "?", the
control sequence elicits a response which consists of the con-
trol sequence which would set the corresponding value. The
dtterm control sequences allow you to determine the icon name
and window title.
The 10 colors (below) which may be set or queried using 1 0
through 1 9 are denoted dynamic colors, since the correspond-
ing control sequences were the first means for setting xterm's
colors dynamically, i.e., after it was started. They are not
the same as the ANSI colors. These controls may be disabled
using the allowColorOps resource. At least one parameter is
expected for Pt. Each successive parameter changes the next
color in the list. The value of Ps tells the starting point
in the list. The colors are specified by name or RGB specifi-
cation as per XParseColor.
If a "?" is given rather than a name or RGB specification,
xterm replies with a control sequence of the same form which
can be used to set the corresponding dynamic color. Because
more than one pair of color number and specification can be
given in one control sequence, xterm can make more than one
reply.
Ps = 1 2 -> Change text cursor color to Pt.
命令行程序xtermcontrol使用这些转义序列来设置和获取光标颜色:
--cursor=COLOR
Set cursor color to COLOR.
--get-cursor
Report cursor color.
例如
$ xtermcontrol --get-cursor
rgb:0000/0000/0000
$ xtermcontrol --cursor limegreen
$ xtermcontrol --get-cursor
rgb:3232/cdcd/3232
对于它的价值,它得到VTE的支持(例如,gnome-terminal)。