インデックス (IND)

カーソルを 1 セル下げ、必要に応じてスクロールします。

  1. 0x1B
    ESC
  2. 0x44
    D

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

カーソルがちょうど下マージン上にあり、左マージン と 右マージン の内側または上にある場合、1 行 上へスクロール します。 スクロール領域がターミナル画面全体で、ターミナルが プライマリ画面 にある場合、スクロールバックが生成されることがあります。詳細は スクロール のドキュメントを参照してください。

カーソルがスクロール領域の外にある、またはスクロール領域の下マージン上にない場合、n = 1 を指定して カーソル下移動 を実行します。

このシーケンスは、カーソルがちょうど下マージン上にあり、残りのスクロール領域内にある場合にのみスクロールします。カーソルがスクロール領域の外にあり、ターミナルの最下行にある場合、カーソルは移動しません。

検証

IND V-1:スクロール領域なし、画面の上部

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "A"
printf "\033D" # index
printf "X"
|A_________|
|_Xc_______|

IND V-2:プライマリ画面の下部

lines=$(tput lines)
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[${lines};1H" # move to bottom-left
printf "A"
printf "\033D" # index
printf "X"
|A_________|
|_Xc_______|

IND V-3:スクロール領域の内側

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[1;3r" # scroll region
printf "A"
printf "\033D" # index
printf "X"
|A_________|
|_Xc_______|

IND V-4:スクロール領域の下部

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[1;3r" # scroll region
printf "\033[4;1H" # below scroll region
printf "B"
printf "\033[3;1H" # move to last row of region
printf "A"
printf "\033D" # index
printf "X"
|__________|
|A_________|
|_Xc_______|
|B_________|

IND V-5:スクロール領域ありのプライマリ画面下部

lines=$(tput lines)
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[1;3r" # scroll region
printf "\033[3;1H" # move to last row of region
printf "A"
printf "\033[${lines};1H" # move to bottom-left
printf "\033D" # index
printf "X"
|__________|
|__________|
|A_________|
|__________|
|Xc________|

IND V-6:左右スクロール領域の外側

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[?69h" # enable left/right margins
printf "\033[1;3r" # scroll region top/bottom
printf "\033[3;5s" # scroll region left/right
printf "\033[3;3H"
printf "A"
printf "\033[3;1H"
printf "\033D" # index
printf "X"
|__________|
|__________|
|XcA_______|

IND V-7:左右スクロール領域の内側

printf "\033[1;1H" # move to top-left
printf "\033[0J"   # clear screen
printf "AAAAAA\n"
printf "AAAAAA\n"
printf "AAAAAA"
printf "\033[?69h" # enable left/right margins
printf "\033[1;3s" # set scroll region left/right
printf "\033[1;3r" # set scroll region top/bottom
printf "\033[3;1H" # Move to bottom left
printf "\033D" # index
|AAAAAA____|
|AAAAAA____|
|c__AAA____|