カーソル上移動 (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_________|
|__________|
|__________|