-1

努力使用xtermjs,并且有一些官方文档未涵盖的问题,至少我没有找到。

  1. 我知道当我在终端中使用某些应用程序时,例如,Vim终端需要切换到备用缓冲区,在我退出应用程序后,终端切换回正常缓冲区。这是正确的吗?

  1. 要在缓冲区之间切换(以及整体控制终端行为),我需要使用控制序列。不是xterm.js独有的东西,而是终端之间统一的通用模式和控制顺序?

  1. 根据文档,切换到备用缓冲区的控制序列CSI ? Pm h带有参数:47

DECSET DEC 私人设置模式 CSI ? Pm h 设置各种终端属性。

在哪里

paramAction47 - 使用备用屏幕缓冲区。


  1. 如何在 xterm.js 中使用这个控制序列,例如,我想切换到备用缓冲区。应该使用什么字符串terminal.write(...)
4

1 回答 1

0
  1. 是的,请参阅此问题中的描述Using the “alternate screen” in a bash script

    备用屏幕被许多“用户交互”的终端应用程序使用,如 vim、htop、screen、alsamixer、less,......它就像终端内容的不同缓冲区,在应用程序退出时消失,所以整个终端得到恢复,看起来应用程序没有输出任何东西

  2. 是的,ANSI 转义码

    ANSI 转义序列是带内信号的标准,用于控制视频文本终端和终端仿真器上的光标位置、颜色和其他选项。某些字节序列,大多数以 Esc(ASCII 字符 27)和 '[' 开头,嵌入到文本中,终端将其查找并解释为命令,而不是字符代码。

    • 切换到备用缓冲区的控制序列:CSI ? 47 h
    • 切换到常规缓冲区的控制序列:CSI ? 47 l
  3. 应用控制序列切换到备用缓冲区的代码:

terminal.write("\x9B?47h"); //CSI ? 47 h
于 2020-08-21T16:34:27.867 回答