左端と右端のマージン設定 (DECSLRM)
左端マージンと右端マージンを設定します。
- 0x1B
- ESC
- 0x5B
- [
- ____
- l
- 0x3B
- ;
- ____
- r
- 0x73
- s
左端マージンと右端マージン(いわゆるスクロール領域)を設定します。 スクロール領域全般の詳細は 上端と下端のマージン設定 を参照してください。
パラメーター l と r は整数値です。いずれかが 0 の場合、その値は
既定値にリセットされます。l の既定値は 1 で、
r の既定値は画面の列数です。
値 l と r は省略できます。いずれかを省略した場合、
その既定値が使われます。なお、l を省略して
r を省略しないことはできません。
このシーケンスは 左右マージンの有効化 (モード 69) が 設定されていることが必要です。モード 69 が設定されていない場合、このシーケンスは何もせず、 左右マージンは設定されません。
このシーケンスは カーソル保存 (CSI s) と衝突します。モード 69 が無効な場合、カーソル保存が
呼び出されます。モード 69 が有効な場合、CSI s のカーソル保存シーケンスは無効になりますが、
カーソル保存は常に ESC 7 としても利用できます。
left が right 以上の場合、このシーケンスは何もしません。スクロール領域は
少なくとも 2 列必要です(r は l より大きくなければなりません)。
このシーケンス記述の残りの部分では、l と r が有効な値であると想定します。
このシーケンスは保留中の折り返し状態を解除し、カーソルを 画面の左上へ移動します。原点モード が設定されている場合、カーソルは スクロール領域の左上へ移動されます。
左右マージンをリセットするには、このシーケンスを両方の値を "0" にして
呼び出します。これにより l と r の既定値が
強制的に適用され、画面全体が対象になります。モード 69 を解除しても左右マージンはリセットされます。
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[?69h" # enable left/right margins
printf "\033[s" # scroll region left/right
printf "\033[X"
|cBC_____|
|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[?69h" # enable left/right margins
printf "\033[2s" # scroll region left/right
printf "\033[2G" # move cursor to column 2
printf "\033[L"
|Ac______|
|DBC_____|
|GEF_____|
| HI_____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[?69h" # enable left/right margins
printf "\033[1;2s" # scroll region left/right
printf "\033[2G" # move cursor to column 2
printf "\033[L"
|_cC_____|
|ABF_____|
|DEI_____|
|GH______|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[?69h" # enable left/right margins
printf "\033[2;2s" # scroll region left/right
printf "\033[X"
|cBC_____|
|DEF_____|
|GHI_____|