跳到主要内容
ansicode

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 A
ESC [ESC [ Ps SP @ / ESC [ Ps SP A
hex1b 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;大于区域宽度的值会清空区域。

示例

bash
printf '\033[3 @'   # scroll screen 3 cols left (note literal SPACE before @)
python
import sys; sys.stdout.write('\x1b[1 A')   # scroll 1 col right
go
fmt.Print("\x1b[2 @")   // scroll 2 cols left
javascript
process.stdout.write('\x1b[1 A')   // scroll 1 col right
c
printf("\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
不支持

相关序列