DECSCUSR — 光标形状
切换光标形状:方块、下划线或竖线(可选是否闪烁)。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[N\x20q (N = 0..6)\\033[
\033[1 q\\e[
\e[1 qESC [
ESC [ N SP qhex
1b 5b <N> 20 71说明
设置光标样式。参数同时决定形状与闪烁:`0` 或 `1` = 闪烁方块(默认),`2` = 实心方块,`3` = 闪烁下划线,`4` = 实心下划线,`5` = 闪烁竖线,`6` = 实心竖线。末字节 `q` 前需要一个字面 SPACE(0x20)作为中间字节。Vim 的 `t_SI`/`t_EI` 与不少 shell 使用 `\x1b[6 q`(竖线)表示插入模式,`\x1b[2 q`(方块)表示普通模式。退出时使用 `\x1b[0 q` 恢复用户默认光标。
规范出处: xterm-ctlseqs (DECSCUSR, CSI Ps SP q)
参数
| 0 | 用户默认光标 |
| 1 | 闪烁方块 |
| 2 | 实心方块 |
| 3 | 闪烁下划线 |
| 4 | 实心下划线 |
| 5 | 闪烁竖线 |
| 6 | 实心竖线 |
示例
printf '\033[6 q' # vertical bar (insert mode)\nprintf '\033[2 q' # block (normal mode)\nprintf '\033[0 q' # restore defaultimport sys; sys.stdout.write('\x1b[6 q')fmt.Print("\x1b[6 q")process.stdout.write('\x1b[6 q')printf("\x1b[6 q");终端支持
- xterm
- 支持
- Linux console (fbcon)
- 部分
- macOS Terminal.app
- 支持
- iTerm2
- 支持
- Windows Terminal
- 支持
- cmd.exe / ConPTY
- 部分
- kitty
- 支持
- alacritty
- 支持
- WezTerm
- 支持
- Ghostty
- 支持
- GNOME Terminal
- 支持
- Konsole
- 支持
- tmux
- 不支持
- GNU screen
- 不支持
| xterm | Linux console (fbcon) | macOS Terminal.app | iTerm2 | Windows Terminal | cmd.exe / ConPTY | kitty | alacritty | WezTerm | Ghostty | GNOME Terminal | Konsole | tmux | GNU screen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 部分 | 支持 | 支持 | 支持 | 部分 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
相关序列
在家族食谱中
CSI 食谱 · 6. 插入 / 删除 / 光标形状 —— IL / DL / ICH / DCH / ECH + DECSCUSR