【问题标题】:What does the ESC [?1c escape sequence do on the Linux console? [closed]ESC [?1c 转义序列在 Linux 控制台上的作用是什么? [关闭]
【发布时间】:2020-01-21 19:11:46
【问题描述】:

在尝试使vim 在我的操作系统控制台上正常工作时,我注意到它在滚动之前向stdout 写入以下转义序列:\x1b[?1c

问题是我无法在任何地方找到该特定序列的含义。我查过了:

谁能帮我解开这个谜?

附:如果一些额外的上下文可能会有所帮助,则在以下上下文中使用该序列:

\x1b[?25l\x1b[?1c\x1b[3;24r\x1b[3;1H\x1b[L

【问题讨论】:

  • 这是一个 ANSI 转义序列的例子。 ANSI 序列的好处是它们具有明确定义的格式,因此如果软件或设备无法识别它很容易被忽略。
  • @MarkRansom 我完全同意。问题是,如果你想让vim 这样的野兽工作,你必须实现它想要使用的几乎所有东西(否则会出现视觉问题)。可悲的是,理论上 vim 并不真正需要更多我的控制台已经支持的东西(大约 90% 的东西),但它使用一些复杂的转义序列作为优化来减少屏幕重绘。这是一个功能强大的应用程序,但也有很多需求。
  • 版主:将这个问题作为 StackOverflow 的题外话来结束,而关于同一主题的其他数十个问题 (转义序列)存在于此处且尚未关闭。要么全部关闭,要么重新打开。我得到了答案,但这不是重点。请参阅:[1] stackoverflow.com/questions/29939026 [2] stackoverflow.com/questions/4842424 [3] stackoverflow.com/questions/9949315 [4] stackoverflow.com/questions/15682537 [5] stackoverflow.com/questions/42072092 这个名单还在继续。
  • 一致性不是 StackOverflow 的特性,习惯吧。在这种情况下,“版主”只是已经存在足够长的时间以收集大量声望点的人。很高兴你得到了答案,很多人就没那么幸运了。

标签: vim terminal console ansi-escape vt100


【解决方案1】:

使用来源。 Linux 内核在this chunk 中处理\x1b[?1c

    case 'c':
        if (vc->vc_ques) {
            if (vc->vc_par[0])
                vc->vc_cursor_type = vc->vc_par[0] | (vc->vc_par[1] << 8) | (vc->vc_par[2] << 16);
            else
                vc->vc_cursor_type = cur_default;
            return;
        }
        break;

根据上下文,您可能会理解vc_par 是一个参数数组(在这种情况下仅为1)。所以它将vc_cursor_type 设置为1。 根据Linux soft cursor 的文档,这会使光标不可见:

第一个参数 指定光标大小: 0=默认 1=不可见 2=下划线, ... 8=全块 + 16 如果要应用软件光标 + 32 如果您想始终更改背景颜色 + 64 如果您不喜欢背景与 前景。

在上下文中,vim 在 \x1b[?25l 之后(使光标隐藏)和更改滚动区域 \x1b[3;24r 之前执行此操作(这将移动光标),并且这个序列只是添加了一个保证,当序列在 Linux 控制台上执行时不会出现光标闪烁。

在示例中引用的链接中,只有 console_codes(4) 是相关的。那里没有出现是因为软光标功能是在原手册页之后添加的,其他人后来在修改手册页时也没有出现。 (实际上没有人对其最近进行任何改进,如recent discussion 所述)。

【讨论】:

  • 谢谢,伙计!你解开了“谜团”,也提供了一些历史背景。我只是想补充一点,其他链接与我有点相关,因为程序可以使用仅在某些控制台上可用而在其他控制台上完全忽略的转义序列。因为我不知道console_codes(4) 是不完整的,所以这听起来像是一个有效的理论:-)
猜你喜欢
  • 2015-07-08
  • 2021-12-04
  • 1970-01-01
  • 2022-01-20
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
相关资源
最近更新 更多