c - 倒回 VT100 终端命令中的一段文本

标签 c terminal vt100

我基本上想操纵连接到终端的某些程序的输出,以便文本的底部始终是一些任意文本 block (我们称之为页脚),而程序的正常输出显示在上面.如果此页脚仅限于单个终端行,只需清除当前行,在每次 write 调用之前将光标移动到行首,然后重写页脚。但是,如果我想要的页脚跨越多个终端行,无论是通过包含换行符还是通过环绕屏幕边缘的行,事情都会很复杂。我想我可以使用“保存光标”和“恢复光标”VT100 控制代码来解决这个问题,每次写入时都会发出这样的代码:

  1. 恢复光标
  2. 所需的编写调用
  3. 保存光标
  4. 输出页脚

但是,当输出文本到达终端底部时,这些方法不起作用,因为保存的光标将始终位于底部行。

有什么办法可以实现这个任意的终端页脚吗?只有 VT100 代码的东西是理想的,但如果唯一的方法是使用 curses,那么我想这也是可能的。

最佳答案

问题是 VT100 不允许文本窗口或固定滚动窗口(也许是更好的术语)。

所以,这就交给您来管理了。

Curses 最简单,因为您可以在您的代码中打开两个单独的窗口,一个用于“文本”,一个用于页脚,然后让 curses 根据需要更新屏幕。

仅使用原始 VT100,您必须跟踪何时滚动。当您滚动时,您可以删除顶行,然后在页脚之前插入一个空行,然后在新的空行上书写。

当然,诅咒会为您处理所有这些。

关于c - 倒回 VT100 终端命令中的一段文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51736445/

相关文章:

c - ANSI VT100 转义序列的标准 C 头文件

c - long int 中的 cpp 出现超过 999999 的段错误

python - 如何在 linux 终端中运行更新的 python 脚本

python - 是否有 Perl 模块 Term::VT102 的 Python 等效项?

shell - 退出tmux后如何自动退出终端

terminal - 无法将项目或标签添加到我在 taskwarrior 中的任务

linux - TERM=linux 中 ctrl + 箭头(左、右、...)的终端转义序列是什么

android - 交叉编译 Android 和依赖项

c - 在我的程序中使用 C/C++ <Thread> 吗?

c - C 编程语言中的递归