擦除行 (EL)
擦除行内容,具体行为取决于命令 `n`。
- 0x1B
- ESC
- 0x5B
- [
- ____
- n
- 0x4B
- K
如果未设置 n,则 n 的值为 0。n 的唯一有效值是
0、1 或 2。如果给出了任何其他 n 值,则不执行此序列。
此序列文档的其余部分假定 n 是有效值。
对于所有有效的 n 值,此序列会取消待定换行状态。
光标位置在整个序列执行期间
始终保持不变。
如果 字符选择属性选择 (DECSCA) 已启用, 或它是当前活动屏幕上最近一次启用的保护模式, 则受保护属性会被忽略。否则,受保护属性会被尊重。有关此受保护属性 处理逻辑的更多细节,参见 擦除字符 (ECH)。
对于所有操作,如果多单元格字符会被拆分,则擦除整个多单元格 字符。例如,如果打印了“橋”,而擦除操作只会擦除该两单元格 字符的第一或第二个单元格,则两个单元格都应被擦除。
如果 n 为 0,执行擦除行右侧操作。擦除行右侧
等同于 擦除字符 (ECH),且 n 设为
从光标到行尾(含光标)的剩余列总数。如果该行是软换行的,
则只擦除这一个行;不会透过换行擦除。此外,该行的换行
状态会被重置,使该行不再被视为换行的。
如果 n 为 1,执行擦除行左侧操作。这会把
光标左侧及光标所在的 n 个单元格替换为空白字符,并
按当前 SGR 状态给背景着色。可以清空的最左
列是屏幕第一列。
左边距 对此操作没有影响。
如果 n 为 2,擦除整行。这等同于
擦除左(n = 1)与擦除右(n = 0)同时执行。
printf "ABCDE"
printf "\033[3G"
printf "\033[0K"
|ABc_____|
cols=$(tput cols)
printf "\033[${cols}G" # move to last column
printf "A" # set pending wrap state
printf "\033[0K"
printf "X"
|_______X|
光标应位于 'X' 上
printf "ABC"
printf "\033[2G"
printf "\033[41m"
printf "\033[0K"
|Ac______|
从 c 起、一直到屏幕右边缘的所有单元格都应有红色背景。
printf "AB橋DE"
printf "\033[4G"
printf "\033[0K"
|AB_c____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABCDE"
printf "\033[?69h" # enable left/right margins
printf "\033[1;3s" # scroll region left/right
printf "\033[2G"
printf "\033[0K"
|Ac________|
printf "\033V"
printf "ABCDE"
printf "\033[1\"q"
printf "\033[0\"q"
printf "\033[2G"
printf "\033[0K"
|Ac________|
printf "\033[1\"q"
printf "ABCDE"
printf "\033V"
printf "\033[2G"
printf "\033[0K"
printf "\033[1K"
printf "\033[2K"
|ABCDE_____|
printf "ABCDE"
printf "\033[3G"
printf "\033[1K"
|__cDE___|
printf "ABC"
printf "\033[2G"
printf "\033[41m"
printf "\033[1K"
|_cC_____|
从 c 起向左的所有单元格都应有红色背景。
printf "AB橋DE"
printf "\033[3G"
printf "\033[1K"
|__c_DE__|
printf "\033V"
printf "ABCDE"
printf "\033[1\"q"
printf "\033[0\"q"
printf "\033[2G"
printf "\033[1K"
|_cCDE_____|
printf "ABCDE"
printf "\033[3G"
printf "\033[2K"
|__c_______|
printf "ABC"
printf "\033[2G"
printf "\033[41m"
printf "\033[2K"
|_c______|
整行都应有红色背景。