如何在终端底部上方添加空行

Koh*_*ani 3 linux mac terminal bash ubuntu

在 vim 和许多其他文本编辑器中,您可以将文件末尾向上滚动到屏幕顶部,同时将其余行显示为空白。但是在终端中,默认情况下,行尾固定在终端屏幕的末尾,因此您当前的行始终出现在底部。在最后一行和屏幕底部之间添加空行时,如何向上滚动当前行?

谢谢

egm*_*ont 5

转义序列\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)。“索引”和“反向索引”序列没有这样的快捷方式。

我将把它留给您作为练习,以根据终端的高度以编程方式确定您的首选行数。