我的理解是,所有这些终端仿真器都从 VT100 标准派生出 ASCII 控制代码行为和 ANSI 转义序列。我还了解到,有一个基于 VT100 或 VT102 的终端行为 ANSI 标准。我的这种理解正确吗?另外,VT100 还衍生出了哪些其他功能或行为?
答案1
虽然在 20 世纪 70 年代和 1980 年代有几种流行的终端,但无论出于何种原因,最初的开发者xterm从20世纪80年代末开始选择使用vt100作为型号。从一开始就存在差异(例如备用屏幕模式,这可能受到 Hewlett Package 终端的影响)。
ANSI x3.64 不是基于在 vt100 上; DEC 是参与制定该标准的几家制造商之一。与大多数标准一样,它是妥协的结果。 vt100 的大部分内容符合 ANSI x3.64 标准,该标准很久以前就被 ISO-6429 (ECMA-48) 取代。它可能实现了 ECMA-48 的四分之一,并提供了一些标准中未包含的功能。
vt100的一些特点不是标准中包括:
- 滚动(和滚动边距)
- 双倍大小的字符
- 保存/恢复光标位置
无论您是否知道,您都已经使用过这三个中的两个。 ECMA-48 描述了 vt100 未实现的不同滚动控件,但在 xterm(以及一些 xterm 模仿者)中受支持。
其他符合 ANSI 的终端(例如 Sun 的控制台仿真器)没有实现这些功能(并且向那里发送滚动区域转义会产生有趣的结果)。
严格来说,VT100不支持插入和删除行的控件。那是在VT102(这就是大多数人认为的“vt100”)。它们是系列的一部分:完整的 vt100 仿真器可以仿真 vt52,vt220 可以仿真 vt100,vt420 可以仿真 vt220 / vt100 / vt52。
到 20 世纪 90 年代中期,xterm 具有一些与 vt220 相关的字符集切换功能。进一步的发展增加了除软字体来自 vt220 指令集(就像双倍大小的字符一样,除了 vttest 之外,许多程序都没有使用它)。这在手册页部分中进行了总结模拟。
虽然 ISO-6429 定义颜色转义序列,vt100/vt220 型号不支持这些序列。 vt525 型号支持这些功能,据我所知,该型号是由 Wyse 设计和制造的。 DEC 和 Wyse 已经有一段时间没有制作终端了,并且该终端中的颜色行为对 xterm 的开发没有影响。这受到了 Linux 控制台的一些影响——但是 Linux 控制台的颜色调色板逃逸完全超出了任何标准。它的颜色选择转义基于 ANSI,但很可能是模仿 AT&T(和 SCO)控制台,而不是通过阅读标准本身。
答案2
http://vt100.net/是一个很好的资源。你大体上是对的;然而,所讨论的 ANSI 标准 ANSI X3.64 和 VT100 是同时开发的。 VT100 是第一个支持该标准的终端,该标准是根据 DEC 的意见制定的。看https://en.wikipedia.org/wiki/ANSI_escape_code进行更长时间的讨论。xterm
及其亲属模拟了足够的 VT220 来支持vi
,vim
以及mc
通常使用的应用程序curses
。他们不尝试完全模拟。并xterm
包括 Tektronix 4010 仿真,供图形应用程序使用。
xterm
VT220及其兄弟姐妹拥有而VT220没有的最重要的一点是颜色。大多数 VT 是单色设备(黑色,购买时可选择琥珀色、绿色或白色);第一个支持彩色的 DEC 终端是 VT340。颜色选择命令在国际标准 ISO 6429(ANSI X3.64 的后续版本)中定义。xterm
还可以加载和显示用户定义的字体。
VT200系列终端引入了数字键盘(带有一个金子键,其中 NumLock 键位于普通 PC 键盘上,它实际上是黄色的),EDT、EVE、TPU 和 DEC 制作的其他精彩文本编辑器(用于 RSX 和 VMS)使用它来执行文本编辑命令,而不是使用常规命令与 Alt 键。这引入了“应用程序键盘模式”的想法,其中数字键盘上的按键不发送数字,而是发送供全屏应用程序使用的特殊代码。
尝试回答评论中的请求,Linux 控制台(即 Linux 以文本模式启动时可用的字符单元界面,或者通过 Ctrl-Alt-F1 到 Ctrl-Alt-F6 从许多 GUI 访问,它标识自己as linux
) 模拟 VT102,但可以加载和显示用户定义的字体并且能够显示颜色;颜色选择命令与 相同xterm
。