[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

时间:2023-01-29 19:56:54

光标位置

回忆上次内容

  • 上次讲了 三引号的输出
  • 三引号中
  • 回车和引号 都会 被原样输出
  • ​\​​ 还是需要从 ​​\\​​转义
  • 黑暗森林 快被摸排清了
  • 还有哪个 转义序列
  • 没 研究过吗?????

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • ​\e​​是 干什么的?????

回忆转义

  • 转义转义
  • 转化含义

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • ​\​​反斜杠(backslash)加了之后
  • 字符就不是原来的意思了
  • 转义么
  • 转义转义
  • 转化含义
  • 所以​​\​​反斜杠这个字符
  • 也叫做转义字符​​Escape character​
  • ​\b​​ 这两个字符的序列算是一个转义序列 ​​Escape sequence​
  • ​\​​ 这个转义字符会让 ​​\b​​转义序列
  • 转义为 ​​Backspace​​ 这个含义
  • ​Backspace​​退格就是这个序列转化含义之后的含义
  • 这个转化后的含义也对应一个ascii字符
  • 就是 ​​\b​
  • 键盘上的<kbd>退格</kbd>对应的数值就是​​8​

转义 Escape

  • ​\e​​是什么意思呢?

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • 转义之后的的含义竟然是 escape

搜索结果

  • 来捋一捋????

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • ​\​​是转义字符
  • 要和后面的字符一起构成转义序列
  • ​\e​​是转义序列
  • 转义的含义是 escape
  • 所谓转义转义
  • 转化含义
  • 转义序列​​\e​​对应的字符含义是Escape
  • 再次逃逸出去
  • 能逃去到哪里呢?

逃逸

  • 从标准输出序列中逃逸出来

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • 可以让输出
  • 从当前的字符串序列中
  • 逃逸(Escape)出去
  • 后面的内容
  • 可就不是 输出的文本 了
  • 而是 控制序列(Control Sequence)
  • ​[10;20H​​ 控制 输出位置
  • 在​​第10行第20列​​进行输出
  • 这种控制方法
  • 在今天被称为
  • ANSI escape code 标准
  • 我们来试试

动手实验

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • 真的可以定位输出
  • 从正常的输出流逃逸到了控制序列!!!

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • 那为什么有控制序列呢?

缘起

  • 电传打字机 输出的颜色
  • 只能通过 控制色带(类似于墨盒)
  • 来控制 打印颜色的深浅
  • 是物理过程

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • 早期的终端
  • 通过调节 显示器亮度 来改变显示效果
  • 各个终端的 制造商
  • 都有 自己独特的 控制字符
  • 这些特殊字符 是和 机器相关 的
  • 彼此 并不兼容
  • 但只要 接受到 这些控制字符
  • 终端 就可以 调整输出方式
  • 比如
  • 在 某个横纵坐标位置​​[x,y]​
  • 输出字符
  • 这就是 数字过程了

统一标准

  • 但是不同终端
  • 控制方式不同
  • 可能 造成显示状态 ​​异常​
  • 远程终端输出结果不可控
  • 需要一个关于控制字符的统一标准
  • 1964 年 ​​ISO 646​
  • 在欧洲以​​ECMA-6​​的形式存在
  • 后来被​​ANSI​​(​​American National Standards Institute​​)
  • 整合为工业标准
  • 叫做 ANSI X3.64

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • 是不是很像ascii
  • 而且包括了 整个黑暗森林
  • 本来 在各种电传打字机 中实现支持
  • 现在在 ​​terminal软件​​ 中实现支持

esc 键

  • Teletype Model ASR-33 终端键盘
  • 数据通信行业 最受欢迎的终端之一
  • 1963 年推出
  • 注意 shift 和 ctrl 都已经出现
  • Alt Mode 出现在第 1 列

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • ​\e​​这个转义序列 有了对应的按键吗?
  • ​ALT MODE​
  • 是用来 切换模式的 特殊按键
  • 这是当时的 ​​esc​​ 键 吗?

总结

  • 这次了解了 新的转义模式
  • \33 逃逸控制字符 esc
  • 这个字符让输出退出标准输出流
  • 进行控制信息的设置
  • 可以设置光标输出的位置

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

  • ASR33中的ALT MODE
  • 是 今天的ESC吗????????

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI