カーソル前方移動 (CUF)

カーソルを `n` セル右へ移動します。

  1. 0x1B
    ESC
  2. 0x5B
    [
  3. ____
    n
  4. 0x43
    C

パラメーター n は 1 以上の整数でなければなりません。n が 0 以下の 場合は n を 1 に調整します。n が省略された場合は n が既定で 1 になります。

このシーケンスは常に保留中の折り返し状態を解除します。

カーソルが移動できる最も右の境界は、現在のカーソル列と 右マージン によって決まります。カーソルが右マージンより右に ある場合、シーケンス実行中は右マージンを画面の最右列へ変更します。カーソルが 位置できる最も右の列は右マージンです。

カーソルを最も右の境界まで(それを含む)n セルだけ右へ移動します。 このシーケンスは折り返さず、セルの内容も変更しません。このシーケンスはどの ターミナルモードの影響も受けません。

検証

CUF V-1: 保留中の折り返し状態が解除される

cols=$(tput cols)
printf "\033[${cols}G" # move to last column
printf "A" # set pending wrap state
printf "\033[C" # move forward one
printf "XYZ"
|_________X|
|YZ________|

CUF V-2: 逆方向折り返しが無効な場合の最も右の境界

printf "A"
printf "\033[500C" # forward larger than screen width
printf "B"
|A________Bc

CUF V-3: 右マージンの左

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[?69h" # enable left/right margins
printf "\033[3;5s" # scroll region left/right
printf "\033[1G" # move to left
printf "\033[500C" # forward larger than screen width
printf "X"
|____X_____|

CUF V-4: 右マージンの右

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[?69h" # enable left/right margins
printf "\033[3;5s" # scroll region left/right
printf "\033[6G" # move to right of margin
printf "\033[500C" # forward larger than screen width
printf "X"
|_________X|