转义序列\e[B
和\e[A
分别向下和向上移动光标,限制在视口内。转义序列\eD
(称为“索引”)和\eM
(“反向索引”)也向下和向上移动,但必要时还会滚动视口。(请注意[
后者中缺少字符。)
我建议您打印几个“索引”字符,然后是相同数量的“向上光标”(或“反向索引”)。例如:
echo -ne '\eD\eD\eD\e[A\e[A\e[A'
Run Code Online (Sandbox Code Playgroud)
将光标向下移动 3 行,必要时滚动整个视口,然后将其向上移动。它有效地确保屏幕底部至少有 3 个空行。
您可以将它连接到您的$PS1
(主要 shell 提示符),只需确保它包含在\[
和之间,\]
以便 shell 知道这些字符不会水平推进光标,例如:
PS1='\[\eD\eD\eD\e[A\e[A\e[A\]prompt$ '
Run Code Online (Sandbox Code Playgroud)
您也可以选择从 打印它$PROMPT_COMMAND
,在这种情况下,如果我没记错的话,它需要包含在0x01
( ^A
) 和0x02
( ^B
) 字节之间。
注意:快捷方式\e[3A
和\e[3B
将光标向上/向下移动 3 行(显然您可以用任何数字替换 3)。“索引”和“反向索引”序列没有这样的快捷方式。
我将把它留给您作为练习,以根据终端的高度以编程方式确定您的首选行数。