跳到主要内容
ansicode

OSC 12 — 设置光标颜色(与查询)

覆写终端光标颜色,或通过 OSC 回报查询当前值。

字节形式

涵盖所有常见的字符串字面量写法,方便正反查找。

\\x1b[\x1b]12;#RRGGBB\x07 (set) \x1b]12;?\x07 (query)
\\033[\033]12;#RRGGBB\007
\\e[\e]12;#RRGGBB\a
ESC [ESC ] 12 ; COLOR BEL
hex1b 5d 31 32 3b ... 07

说明

OSC 12 设置文本光标(即输入位置绘制的块状 / 竖条 / 下划线)的颜色。颜色参数与 OSC 10 / 11 接受同样的写法:`#RRGGBB`、`#RGB`、`rgb:RRRR/GGGG/BBBB`、X11 颜色名。将颜色改为 `?`(`\x1b]12;?\x07`),终端会用同一语法回报当前光标色 —— 主题脚本与 `:set background=...` 自动检测会以此读取实时调色板。用 OSC 112(`\x1b]112\x07`)恢复用户在终端偏好中设置的默认光标色。与光标形状(`\x1b[? q` — DECSCUSR)和光标可见性(`\x1b[?25h/l`)相互独立,OSC 12 只改变颜色。

规范出处: xterm-ctlseqs (OSC 12 / 112)

示例

bash
printf '\033]12;#f38ba8\007'   # set cursor to pink\nprintf '\033]12;?\007'         # query current cursor colour
python
import sys; sys.stdout.write('\x1b]12;#f38ba8\x07')
go
fmt.Print("\x1b]12;#f38ba8\x07")
javascript
process.stdout.write('\x1b]12;#f38ba8\x07')
c
printf("\x1b]12;#f38ba8\x07");

终端支持

xterm
支持
Linux console (fbcon)
不支持
macOS Terminal.app
部分
iTerm2
支持
Windows Terminal
部分
cmd.exe / ConPTY
不支持
kitty
支持
alacritty
支持
WezTerm
支持
Ghostty
支持
GNOME Terminal
支持
Konsole
支持
tmux
不支持
GNU screen
不支持

相关序列