- 我需要在 xterm 中实现哪些任务以及我应该期望 node-pty 处理什么。
xterm.js:
Terminal.write
那是应该写入来自 PTY 的传入数据的位置。
Terminal.onData
包含来自用户的数据的事件(终端上的键盘输入)。应写入 PTY。
这些是获得有效 PTY 连接的最低要求。还有更多的好东西,比如插件,可以获得更全面的体验。另请参阅 repo 中的演示项目。
PTY:
主端的 PTY 主要有 2 个有趣的接口部分 - IO 字节流(现在可以假定为 UTF8)和获取/设置终端大小的方法。
- 创建一个历史缓冲区来处理向上/向下箭头。
- 创建终端提示符
- 手左右箭头
对于在 TTY 接口后面驱动的终端(PTY 是一种特殊情况),这些事情由当前在前台运行的应用程序处理(如 shell 本身)。前台应用程序控制历史缓冲区、提示打印、如何使用箭头键等。作为 cmdline 应用程序开发人员,您可能会关心这些事情(PTY 的从属端),但作为终端集成商(PTY 的主控端)则不然。
- 在 node-pty 中列出数据事件时,我得到了回显命令、响应和新的终端行。过滤掉任何不是对发出命令的响应的数据事件的最佳方法是什么?有时回显的命令是
xterm.js 是一个哑终端,因此无法直接从用户输入中输出数据,而是依赖于适当的回显。回显本身是 TTY 内核接口的一项功能,不应被过滤,除非您想要静默输入(但这不是这样做的方法)。
- 如何为 node-pty 列数选择一个值?pty 列的数量是否需要与 xterm 中的列数匹配?如果用户在 xterm 中键入的命令很长,则回显的命令会在发出的命令的 pty 回显中混乱。
是的,在 xterm.js 和 PTY 上的大小columns x rows
应该始终相同,否则会发生奇怪的输出错误。