删除行 (DL)
在当前光标位置删除 `n` 行并将现有 行上移。
- 0x1B
- ESC
- 0x5B
- [
- ____
- n
- 0x4D
- M
参数 n 必须是大于等于 1 的整数。如果 n 小于
等于 0,则将 n 调整为 1。如果省略 n,则 n 默认为 1。
如果当前光标位置在当前滚动区域之外, 此序列不执行任何动作。光标在以下情况位于当前滚动区域之外: 高于 上边距、低于 下边距、 位于 左边距 左侧或 右边距 右侧。
此序列会取消待定换行状态。
此序列将光标列移动到左边距。
移除当前滚动区域顶部的 n 行,并将现有行上移。
在滚动区域底部产生的空间应为空白,其背景色按当前 SGR 状态设置。
如果设置了 左边距 或 右边距, 则只删除或移动边距内(含边距)的单元格。 左边距左侧或右边距右侧的其他现有内容保持不变。
如果多单元格字符会被拆分,则擦除整个多单元格字符。例如, 如果“橋”打印在左边距左侧,而由 DL 导致的行移动会拆分该字符, 则应擦除该单元格。
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[2;2H"
printf "\033[M"
|ABC_____|
|GHI_____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[3;4r" # scroll region top/bottom
printf "\033[2;2H"
printf "\033[M"
|ABC_____|
|DEF_____|
|GHI_____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "123\n"
printf "\033[1;3r" # scroll region top/bottom
printf "\033[2;2H"
printf "\033[M"
|ABC_____|
|GHI_____|
|________|
|123_____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC123\n"
printf "DEF456\n"
printf "GHI789\n"
printf "\033[?69h" # enable left/right margins
printf "\033[2;4s" # scroll region left/right
printf "\033[2;2H"
printf "\033[M"
|ABC123__|
|DHI756__|
|G___89__|