SL / SR — 左滚 / 右滚(CSI Ps SP @ / CSI Ps SP A)
将屏幕内容左滚(SL)或右滚(SR)Ps 列 —— 与 CSI S / CSI T 对应的水平方向版本。
字节形式
涵盖所有常见的字符串字面量写法,方便正反查找。
\\x1b[
\x1b[<Ps> @ (SL) \x1b[<Ps> A (SR)\\033[
\033[1 @ / \033[1 A\\e[
\e[1 @ / \e[1 AESC [
ESC [ Ps SP @ / ESC [ Ps SP Ahex
1b 5b ... 20 40 / 1b 5b ... 20 41说明
把屏幕(或当前 DECSTBM / DECSLRM 区域)每一格内容向左(SL —— 末字节 `SP @`)或向右(SR —— 末字节 `SP A`)移动 `Ps` 列。被推出边缘的列被丢弃;另一边以当前 SGR 背景色填充空白。中间字节是**字面空格(0x20)**,位于参数与末字节之间 —— ECMA-48 习惯写作 `SP`,初读容易忽略。SR 的末字节 `A` 与 CUU(光标上移)相同,但靠中间空格区分 —— 解析器必须根据末字节前是否存在 0x20..0x2f 字节来判断。常见用途是宽表格 / 代码查看面板的水平滚动,无需重绘其他部分。支持显著薄于纵向滚动(CSI S / CSI T)—— Linux console、ConPTY 与若干 xterm 克隆把 SL / SR 视为空操作。
规范出处: ECMA-48 §8.3.121 (SL) / §8.3.135 (SR) / xterm-ctlseqs
参数
| Ps | 滚动的列数。省略时默认 1;大于区域宽度的值会清空区域。 |
示例
printf '\033[3 @' # scroll screen 3 cols left (note literal SPACE before @)import sys; sys.stdout.write('\x1b[1 A') # scroll 1 col rightfmt.Print("\x1b[2 @") // scroll 2 cols leftprocess.stdout.write('\x1b[1 A') // scroll 1 col rightprintf("\x1b[5 @"); // scroll 5 cols left终端支持
- 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 支持 | 不支持 | 不支持 | 部分 | 不支持 | 不支持 | 支持 | 部分 | 支持 | 支持 | 部分 | 支持 | 不支持 | 不支持 |