保存光标 (DECSC)
保存多种光标相关状态,可通过恢复光标 (DECRC) 恢复。
- 0x1B
- ESC
- 0x37
- 7
以下属性会被保存:
- 绝对屏幕坐标中的光标行与列
- 字符集
- 待处理换行状态
- SGR 属性
- 原点模式 (DEC 模式 6)
任何时候只能保存一个光标。如果重复执行保存光标,先前保存的光标会被覆盖。
主屏幕与备用屏幕拥有各自独立的已保存光标状态。在主屏幕上保存的光标无法从备用屏幕访问,反之亦然。
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____|
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_________|
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" 应具有相同的样式。