Skip to content

Latest commit

 

History

History
279 lines (208 loc) · 6.69 KB

315-87341-控制序列_光标位置设置_ESC_逃逸字符_CSI.sy.md

File metadata and controls

279 lines (208 loc) · 6.69 KB
show version enable_checker
step
1.0
true

光标位置

回忆上次内容

  • 上次我们研究的比较杂

    • 类型转化
    • 进制转化
    • 捕获异常
    • 版本控制
    • 生成帮助文档
    • 变量的常用类型
    • 变量的生命周期控制
  • 数据类型主要研究了两个

    • 字符串
      • str
    • 整型数字
      • int
  • 字符串型 和 整型数字型变量

    • 是可以相互转化的
  • 加法运算逻辑 会根据操作变量的不同 而不同

    • 整型变量的加法 是真的加
    • 字符串的加法 是字符串拼接
  • 字符串中有一些转义字符

    • \n
    • \r
    • \t
    • 都是什么意思来着??
  • 还有什么没见过的转字符吗??🤔

回忆转义

  • 转义转义
    • 转化含义

图片描述

  • 下图中hello的o
    • 为什么消失了?

图片描述

  • \b 是一个字符
    • 代表的含义是退格
  • hello中的o
    • 被退格符删除了
  • 如果不用chr
    • 想要直接打出上面的效果
    • 应该怎么办呢?

直接加起来

图片描述

  • 想要用\b替换chr(8)
    • 程序报错了

图片描述

  • 续行符(\)之后
    • 有不期待的字符
  • 想要获得同样的字符
    • 应该怎么办呢?

反斜杠的作用

  • \反斜杠(backslash) 在程序里面的作用

    • 是续行符
    • line continuation character
  • 当把\反斜杠(backslash)放入双引号里面之后

    • \反斜杠 就是 转义字符
      • escape character
    • 转义字符
      • 在字符串中有特殊的含义
      • 可以和后面的字符一起
      • 构成转义序列
        • escape sequence

图片描述

  • 在下图中
    • \b 就是转义序列
      • escape sequence
    • \b 这个转义序列
      • 是由两部分组成
        • \ 转义字符
          • escape character
        • b 具体转到的含义

图片描述

  • 这两个字符的序列组合起来的意思
    • 就是退格
    • backspace
  • 还有什么转义字符吗?

换行

  • \n 这个转义序列的意思是
    • line feed
    • 换行

图片描述

  • \r 这个转义序列的意思是
    • carriage return
    • 回车

图片描述

转义序列 中文含义 英文含义 ascii序号
\b 退格 backspace 8
\t 制表键 tab 9
\n 换行 line feed 10
\r 回车 carriage 13
  • 可以看到更多的转义字符吗?

转义 Escape

  • 回忆
    • 可以用八进制
      • \ooo
    • 用十六进制
      • \xhh
    • 来表示转义字符

图片描述

  • 这就是全部转义字符了吗?

控制字符

  • 转义字符
    • 具有一定的控制作用
    • 也被叫做 控制字符
    • control characters
  • 以下就是
    • ascii中的全部转义字符

图片描述

  • 居然有转义序列
    • 转义之后的的含义是 escape

搜索结果

  • 来回顾一下🤔
  • \是转义字符
    • 要和后面的字符一起构成转义序列
  • \e是转义序列
    • 也被称作 逃逸字符
      • escape

图片描述

  • 这 逃逸字符 escape
    • 逃逸指的是什么意思呢?
  • 我们来试试

动手实验

  • 实践证明
    • 直接使用\e是不行的

图片描述

  • 但是可以使用
    • \e 的 8进制形式
      • 用 \033 代替 \e

图片描述

  • 这样可以控制输出字符串的位置!!!

理解Escape

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

图片描述

逃逸

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

图片描述

  • 可以让输出
    • 从当前的字符串序列中
      • 退出(Escape) 出去
    • 后面的内容
      • 可就不是 输出的文本 了
  • 而是 控制序列(Control Sequence)
    • [10;20H 控制 输出位置
      • 第10行第20列进行输出
  • 那为什么有控制序列呢?

缘起

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

图片描述

  • 早期的终端
    • 通过调节 显示器亮度
    • 来改变显示效果
    • 各个终端的 制造商
      • 都有 自己独特的 控制字符
  • 这些特殊字符 是和 机器型号相关 的
    • 只要 接受到 这些控制字符
    • 终端 就可以 调整输出方式
    • 但是 并没有统一标准

统一标准

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

图片描述

  • 这个字符集 是不是很像 ascii
    • 而且包括了 整个黑暗森林
  • 这套标准
    • 本来 在各种电传打字机 被实现
    • 后来 在各种终端中 被实现
    • 现在 在terminal软件 被实现

esc 键

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

图片描述

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

总结

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

图片描述

  • ASR33中的ALT MODE

    • 是 今天的ESC键吗????🤔
  • 我们下次再说!👋