Skip to content

Latest commit

 

History

History
200 lines (141 loc) · 4.25 KB

317-820842-[趣味拓展]控制序列_清屏_控制输出位置_2J.sy.md

File metadata and controls

200 lines (141 loc) · 4.25 KB
show version enable_checker
step
1.0
true

光标位置

回忆上次内容

  • 上次了解了键盘演化的过程
    • ESC 从 组合键
    • 到 独立按键

图片描述

  • ESC的作用 是
    • 进入 控制序列
    • 配置 控制信息
    • 控制信息
      • \033[y;xH 设置光标位置
      • \033[2J 清屏
  • 这到底怎么控制???🤔
  • 来实现这些功能?

控制

  • 是由 系统中 终端软件
    • 来实现的

图片描述

  • 具体来说
    • 当前系统中 终端软件 就是
      • xfce terminal

图片描述

输出字符

  • \033是转义序列
    • \33\033的省略写法
      • ``\0ooo` 的方式是
        • 使用 八进制形式 输出转义字符
    • 033
      • ord("\e") 的八进制形式
    • 也可以 写成 16进制形态
      • 0x1b
      • \x1b
print("\033[2J")
  • J 是模式选择
    • 清屏模式
    • 分为四种清屏
      • 0J - 从光标清到屏幕结束
      • 1J - 从光标清到屏幕开头
      • 2J - 整屏幕清
      • 3J - 整屏幕清并选择清空滚动缓存

图片描述

  • 2J 是 整屏幕全清空

屏幕清空

  • 仿佛宇宙进行了一场重启
    • 回到了最初什么都没有的初始状态
      • 白茫茫大地真干净

图片描述

  • 这个字符的宇宙
    • 究竟有多大呢?

观察环境

  • 进入vi 观察屏幕大小

图片描述

  • 终端屏幕默认 80*24 (字符)
    • 这尺寸可以追溯到 早期的存储介质
      • 纸质卡片
    • 目前已经成为了 终端默认的大小

图片描述

  • 终端清屏之后
    • 可以让光标
      • 从左上角进行输出吗?

设置光标

  • \33[ 是CSI

    • 控制序列前导符
    • Control Sequence Introducer
  • 如果没有csi

    • 就是将文本直接输出到标准输出流
  • 如果加上了csi

    • 就输出了控制序列
    • 从而可以控制输出的位置和颜色等
print("\33[1;1Hoeasy")
  • 1;1 指的是
    • 屏幕左上角
      • 终端大小
        • 横向80字符
        • 纵向24字符
    • 中间用分隔符是分号(;)
  • 设置好了输出位置 之后
    • 再输出 后面的字符 oeasy
  • H 是模式选择

图片描述

  • 可以先清屏 再输出吗?

清屏并设置光标

print("\33[2J")
print("\33[1;1Hoeasy")
  • 这是两句话
    • 完成两件事
      1. 2J清屏
      2. 1;1H设置输出位置

图片描述

  • 两句话可以合并成一句吗?

合并输出

  • "\33[2J\33[1;1Hoeasy"
    • \33[2J 终端接收到后清屏
    • \33[1;1H 终端接收到后设置光标
    • 终端输出 oeasy
print("\33[2J\33[1;1Hoeasy")
  • 可以换个位置 输出吗?

换个位置

print("\33[2J\33[10;10Hoeasy")
  • "\33[2J\33[10;10Hoeasy"

    • 先清屏
    • 再在(10,10)坐标输出oeasy
  • 这样就可以 让光标

    • 在屏幕中 任意移动

图片描述

  • 一个跟头 十万八千里
    • 这就是通过escape引发的
    • 控制序列的 作用

escape

  • escape 就是退出
    • 从 当前输出序列中 退出来
      • 进行 控制信息的输出

图片描述

  • 看起来很像 安全逃生出口

图片描述

总结

  • 这次了解了 一个新的转义模式

    • \33 逃逸控制字符 esc
  • esc 让输出

    • 退出 标准输出流
    • 进行 控制信息的设置
      • 可以 清屏
      • 也可以 设置光标输出的位置
  • 根据这个能做个小游戏吗???🤔

图片描述

  • 我们下次再说!👋