根据这个来源,以下是关于光标可执行的操作:
- Position the Cursor:
\033[<L>;<C>H
Or
\033[<L>;<C>f
puts the cursor at line L and column C.
- Move the cursor up N lines:
\033[<N>A
- Move the cursor down N lines:
\033[<N>B
- Move the cursor forward N columns:
\033[<N>C
- Move the cursor backward N columns:
\033[<N>D
- Clear the screen, move to (0,0):
\033[2J
- Erase to end of line:
\033[K
- Save cursor position:
\033[s
- Restore cursor position:
\033[u
所以你可以使用\033[s
保存光标位置,然后使用\033[u
恢复它。但是如果我想保存多个光标位置怎么办?
例如,假设我想保存两个光标位置,然后恢复它们。值会被擦除对吧?所以我的问题是:是否有一种方法,使用ANSI转义序列或者不使用,来保存多个光标位置以便在bash中稍后恢复它们?
"\033[s"
在代码中保存光标位置,但最好考虑使用从所选输出行的偏移量并更新输出而不是使用保存的位置。为什么?如果您的程序在某个地方输出了额外的一行,并且您正在使用 ANSI 转义返回到固定位置,那么您现在将会偏移一行。使用固定行和偏移量,您只需在下一次更新时用格式化数据覆盖输出即可。 - David C. Rankin