反向索引 (RI)
将光标上移一个单元格,必要时滚动。
- 0x1B
- ESC
- 0x4D
- M
该序列不会取消待处理的换行状态。
如果光标恰好位于 上边距,且处于 左右边距 之内,则以 n = 1 调用 向下滚动 (SD)。操作结束。
否则无需滚动。以 n = 1 执行 光标上移 操作。
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "A\n"
printf "B\n"
printf "C\n"
printf "\033[1;1H" # move to top-left
printf "\033M" # reverse index
printf "X"
|Xc________|
|A_________|
|B_________|
|C_________|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "A\n"
printf "B\n"
printf "C\n"
printf "\033[2;1H"
printf "\033M" # reverse index
printf "X"
|Xc________|
|B_________|
|C_________|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "A\n"
printf "B\n"
printf "C\n"
printf "\033[2;3r" # scroll region
printf "\033[2;1H"
printf "\033M" # reverse index
|A_________|
|c_________|
|B_________|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "A\n"
printf "B\n"
printf "C\n"
printf "\033[2;3r" # scroll region
printf "\033[1;1H"
printf "\033M" # reverse index
|A_________|
|B_________|
|C_________|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[?69h" # enable left/right margins
printf "\033[2;3s" # scroll region left/right
printf "\033[1;2H"
printf "\033M"
|A_________|
|DBC_______|
|GEF_______|
|_HI_______|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[?69h" # enable left/right margins
printf "\033[2;3s" # scroll region left/right
printf "\033[2;1H"
printf "\033M"
|ABC_______|
|DEF_______|
|GHI_______|
光标位于 A 上。