上端と下端のマージン設定 (DECSTBM)
上端マージンと下端マージン(いわゆるスクロール領域)を設定します。
- 0x1B
- ESC
- 0x5B
- [
- ____
- t
- 0x3B
- ;
- ____
- b
- 0x72
- r
パラメーター t と b は整数値です。いずれかが 0 の場合、その値は
既定値にリセットされます。t の既定値は 1 で、
b の既定値は画面の行数です。
値 t と b は省略できます。いずれかを省略した場合、
その既定値が使われます。なお、t を省略して
b を省略しないことはできません。有効なシーケンスは CSI t ; b r、
CSI t r、CSI r だけです。
top が bottom 以上の場合、このシーケンスは何もしません。スクロール領域は
少なくとも 2 行必要です(b は t より大きくなければなりません)。
このシーケンス記述の残りの部分では、t と b が有効な値であると想定します。
このシーケンスは保留中の折り返し状態を解除し、カーソルを 画面の左上へ移動します。原点モード が設定されている場合、カーソルは スクロール領域の左上へ移動されます。
スクロール領域をリセットするには、このシーケンスを両方の値を "0" にして
呼び出します。これにより t と b の既定値が
強制的に適用され、画面全体が対象になります。
上端マージンと下端マージンで、いわゆる_スクロール領域_が構成されます。 スクロール領域は、行挿入、カーソル下移動 など 多くのシーケンスの動作に影響します。スクロール領域により、ターミナルへの変更を 画面内の矩形領域に制限する、効果的かつ効率的な手段になります。
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[r" # scroll region top/bottom
printf "\033[T"
|c_______|
|ABC_____|
|DEF_____|
|GHI_____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[2r" # scroll region top/bottom
printf "\033[T"
|ABC_____|
|________|
|DEF_____|
|GHI_____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[1;2r" # scroll region top/bottom
printf "\033[T"
|________|
|ABC_____|
|GHI_____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[2;2r" # scroll region top/bottom
printf "\033[T"
|________|
|ABC_____|
|DEF_____|
|GHI_____|