是否有将光标移动到行尾的 ANSI 控制序列?
Is there an ANSI control sequence which moves the cursor to the end of line?
我知道 [nC
可以向前移动光标 n
列;问题是,我不知道特定行由多少个字符组成。
不,没有这样的ANSI控制序列。
没有任何内容 明确,但是屏幕是 "small",您可以使用任何光标移动命令移动到任意远的目的地和终端将限制屏幕大小的移动。
例如,光标向前(在 terminfo 中,cuf
)控件使用重复计数和水平位置绝对(在 terminfo 中,hpa
) 控件使用列值。这些中的任何一个都适合你:
tput cuf 999
tput hpa 999
(假设您的屏幕少于一千列)。还有其他可能在您的终端(模拟器...)中实现,但这些很常见。
顺便说一句,对于硬编码,cuf
与问题中的示例相同。移动的是 columns,而不是 lines。要将光标移动 行 ,您可以使用 cud
(escape> [nB).
万一有人遇到类似的问题,我设法解决了在 [nC
中明确知道 n
的必要性,方法是在我的程序中获取它的值并使用 string interpolation 将变量 n
的值放入包含上述转义序列的字符串中。
然而,这不是一个通用的解决方案,因为在某些情况下 n
可能无法如此轻易地确定。
我知道 [nC
可以向前移动光标 n
列;问题是,我不知道特定行由多少个字符组成。
不,没有这样的ANSI控制序列。
没有任何内容 明确,但是屏幕是 "small",您可以使用任何光标移动命令移动到任意远的目的地和终端将限制屏幕大小的移动。
例如,光标向前(在 terminfo 中,cuf
)控件使用重复计数和水平位置绝对(在 terminfo 中,hpa
) 控件使用列值。这些中的任何一个都适合你:
tput cuf 999
tput hpa 999
(假设您的屏幕少于一千列)。还有其他可能在您的终端(模拟器...)中实现,但这些很常见。
顺便说一句,对于硬编码,cuf
与问题中的示例相同。移动的是 columns,而不是 lines。要将光标移动 行 ,您可以使用 cud
(escape> [nB).
万一有人遇到类似的问题,我设法解决了在 [nC
中明确知道 n
的必要性,方法是在我的程序中获取它的值并使用 string interpolation 将变量 n
的值放入包含上述转义序列的字符串中。
然而,这不是一个通用的解决方案,因为在某些情况下 n
可能无法如此轻易地确定。