0

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

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

谁能帮我解开这个谜?

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

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

4

1 回答 1

2

使用源。Linux 内核\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_type1。根据Linux soft cursor的文档,这使得光标不可见:

第一个参数

    指定光标大小:

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

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

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

于 2020-01-23T22:22:22.260 回答