jcu*_*bic 2 bash terminal escape-characters ansi
我正在为 jQuery 终端处理我的 ANSI 格式代码。它几乎可以工作,但我有一个问题,它与应该移动光标的 0A ansi 代码有关(还有其他 0 光标代码:BCDEF)
我已经用ervy 库进行了测试,如果我\x1b\[0[A-D]在输出到终端之前从字符串中删除它会有所不同。
我不确定如果我正确处理 ANSI 转义符,我将输出分成几行,然后在每行之前增加 y 位置并将 x 设置为 0,当有光标 ANSI 转义码时,我移动光标。我使用数组数组来保存屏幕的输出。(不确定,但我认为如果我直到最后都不将线条连接成一个字符串会更快,但我这样做是因为它是第一个想法而不是因为速度)。
如果有 0,我不确定我应该做什么。
这是来自 ervy 库的两个图的输出
正确的情节
没有零代码的绘图。
我正在尝试调试我的代码(我认为有一点是第二个屏幕上的情节),但我不知道如何处理 0 ANSI 转义码。
我使用维基百科作为参考。
这些转义序列将重复计数作为参数,例如\e[5A将光标向上移动 5 行,\e[10C将光标向右移动 10 列等。如果省略,则默认值为 1。
但是如果参数明确指定为 0 会发生什么?
我们来看看标准。ECMA-48 以及 ctlseqs.html(记录 xterm 的行为)对此没有任何说明,也就是说,隐含地暗示它们应该移动零。另一方面,DEC STD 070 表示值 0 应移动 1。
让我们看看实现。对于这些序列中的一些,urxvt 将 0 解释为 0,例如对于垂直光标移动,而不是对于水平光标(那里是 1)。我检查过的所有其他终端都将其解释为 1(包括 xterm,因此其行为和文档不匹配)。
标准不一致。实现是不一致的。
你能做什么?不要使用这些。如果您遇到发出这些信息的库,请提交错误并要求其开发人员停止使用这些有问题的转义序列,因为无论他们期望什么,这都违反了某些标准,并且肯定会在某些终端中中断。
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |