光标上移 (CUU)

将光标上移 `n` 个单元格。

  1. 0x1B
    ESC
  2. 0x5B
    [
  3. ____
    n
  4. 0x41
    A

参数 n 必须是大于等于 1 的整数。如果 n 小于 等于 0,则将 n 调整为 1。如果省略 n,则 n 默认为 1。

此序列总是取消待定换行状态。

如果当前光标位置在 上边距 处或之下, 光标能移动到的最高点是上边距。如果当前光标位置在上边距之上, 光标能移动到的最高点是第一行。

校验

CUU V-1:光标上移

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[3;1H"
printf "A"
printf "\033[2A" # cursor up
printf "X"
|_Xc_______|
|__________|
|A_________|

CUU V-2:光标上移(低于上边距)

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\n\n\n\n" # screen is 4 high
printf "\033[2;4r" # set scrolling region
printf "\033[3;1H"
printf "A"
printf "\033[5A" # cursor up
printf "X"
|__________|
|_Xc_______|
|A_________|
|__________|

CUU V-3:光标上移(高于上边距)

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\n\n\n\n\n" # screen is 5 high
printf "\033[3;5r" # set scrolling region
printf "\033[3;1H"
printf "A"
printf "\033[2;1H" # move above region
printf "\033[5A" # cursor up
printf "X"
|Xc________|
|__________|
|A_________|
|__________|
|__________|