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

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

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

谢谢

答案1

转义序列\e[B\e[A分别将光标向下和向上移动,限制在视口内。转义序列\eD(称为“索引”)和(“反向索引”)也向下和向上移动,但如果需要,还会滚动视口。(请注意后者\eM缺少字符。)[

我建议您打印几个“索引”字符,然后打印相同数量的“光标向上”(或“反向索引”)。例如:

echo -ne '\eD\eD\eD\e[A\e[A\e[A'

将光标向下移动 3 行,必要时滚动整个视口,然后将其向上移动。实际上,它可以确保屏幕底部至少有 3 个空行。

您可以将它挂接到您的$PS1(主 shell 提示符),只需确保它被括在和之间\[\]以便 shell 知道这些字符不会水平移动光标,例如:

PS1='\[\eD\eD\eD\e[A\e[A\e[A\]prompt$ '

您还可以选择从 打印它$PROMPT_COMMAND,在这种情况下,如果我没记错的话,它需要用0x01( ^A) 和0x02( ^B) 字节括起来。

注意:快捷键\e[3A\e[3B上下移动光标 3 行(当然,你可以用任意数字代替 3)。“索引”和“反向索引”序列没有这样的快捷键。

我将把它留给你作为练习,让你根据终端的高度以编程方式找出你喜欢的行数。

相关内容