Save Cursor (DECSC)
-
- 0x1B
- ESC
-
- 0x37
- 7
The following attributes are saved:
- Cursor row and column in absolute screen coordinates
- Character sets
- Pending wrap state
- SGR attributes
- Origin mode (DEC Mode 6)
Only one cursor can be saved at any time. If save cursor is repeated, the previously save cursor is overwritten.
Primary and alternate screens have separate saved cursor state. A cursor saved on the primary screen is inaccessible from the alternate screen and vice versa.
Validation
SC V-1: Cursor Position
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: Pending Wrap State
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 Attributes
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________|
The “A” and “X” should have identical styling.