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

标签 linux bash macos ubuntu terminal

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

最佳答案

大多数终端都能识别 VT100 风格的滚动区域。您可以使用它们临时设置要滚动的行的限制,并移动行。

一步一步:

  • 保存当前光标位置
  • 求屏幕上的行数
  • 计算您想要保留的最后一个行号(上面)
  • 编写控制序列,用于设置滚动边距,正好越过该行,直到屏幕末端
  • 将光标移动到(屏幕和滚动区域的)最后一行
  • 发送控制序列(或换行符等),强制滚动区域向上“索引”
  • 取消设置滚动边距
  • 恢复光标位置

在脚本中,您可以使用 tput 完成大部分操作,例如,

  • tput sc 保存光标位置
  • tput csr first last,将滚动区域设置为第一行/最后一行
  • tput cup last 0,将光标移动到滚动区域的最后一行(使用与 csr 命令中相同的 last 值)
  • tput ind 向上索引一次,或 tput indncount,按 count 行向上索引。
  • tput rc 恢复光标位置

命令(csr 等)是终端功能,并且可以因终端而异。

虽然滚动区域被广泛使用,但滚动区域并不在标准中( ECMA-48 )。

进一步阅读:

关于linux - 如何在终端底部上方添加空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672360/

相关文章:

linux - Gnuplot 不加载图表

linux - 如何在bash中用另一个整数变量来增加一个整数变量?

node.js - NPM 安装错误 (Package.JSON) 未更新

c - ifconfig 和套接字 inet_ntop 的不同 IP 结果

linux - 具有 SDL 支持且没有 XWindows 的最小 Linux 发行版?

linux - iptables 端口转发 - 没有返回任何内容

c++ - 客户端在关闭后向收到的数据包发送 RST(SHUT_WR)

java - 创建 Mac .app 文件 : How to set the WorkingDirectory to parent path?

macos - 如何在 Mac 上设置 TortoiseHG 与 2 个 parent 进行比较?

macos - 通过 ScriptMonitor.app 实用程序运行 AppleScript