在 vim 和许多其他文本编辑器中,您可以将文件末尾滚动到屏幕顶部,同时将其余行显示为空白。但在终端中,默认情况下,行尾固定在终端屏幕的末尾,因此当前行始终出现在底部。如何向上滚动当前行,同时在最后一行和屏幕底部之间添加空白行? 谢谢。
最佳答案
大多数终端都能识别 VT100 风格的滚动区域。您可以使用它们临时设置要滚动的行的限制,并移动行。
一步一步:
- 保存当前光标位置
- 求屏幕上的行数
- 计算您想要保留的最后一个行号(上面)
- 编写控制序列,用于设置滚动边距,正好越过该行,直到屏幕末端
- 将光标移动到(屏幕和滚动区域的)最后一行
- 发送控制序列(或换行符等),强制滚动区域向上“索引”
- 取消设置滚动边距
- 恢复光标位置
在脚本中,您可以使用 tput
完成大部分操作,例如,
tput sc
保存光标位置tput csr
first last,将滚动区域设置为第一行/最后一行tput cup
last 0,将光标移动到滚动区域的最后一行(使用与csr
命令中相同的 last 值)tput ind
向上索引一次,或tput indn
count,按 count 行向上索引。tput rc
恢复光标位置
命令(csr
等)是终端功能,并且可以因终端而异。
虽然滚动区域被广泛使用,但滚动区域并不在标准中( ECMA-48 )。
进一步阅读:
关于linux - 如何在终端底部上方添加空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672360/