カーソル保存 (DECSC)

カーソル復元 (DECRC) で復元できる、カーソル関連の各種状態を保存します。

  1. 0x1B
    ESC
  2. 0x37
    7

次の属性が保存されます:

保存できるカーソルは常に 1 つだけです。カーソル保存を繰り返すと、以前に保存したカーソルは上書きされます。

プライマリ画面と代替画面は、それぞれ別々の保存カーソル状態を持ちます。プライマリ画面で保存したカーソルは代替画面からはアクセスできず、その逆も同様です。

検証

SC V-1:カーソル位置

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[1;5H"
printf "A"
printf "\0337" # Save Cursor
printf "\033[1;1H"
printf "B"
printf "\0338" # Restore Cursor
printf "X"
|B___AX____|

SC V-2:保留中の折り返し状態

cols=$(tput cols)
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[${cols}G"
printf "A"
printf "\0337" # Save Cursor
printf "\033[1;1H"
printf "B"
printf "\0338" # Restore Cursor
printf "X"
|B________A|
|X_________|

SC V-3:SGR 属性

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[1;4;33;44m"
printf "A"
printf "\0337" # Save Cursor
printf "\033[0m"
printf "B"
printf "\0338" # Restore Cursor
printf "X"
|AX________|

"A" と "X" は同じスタイルになるはずです。