Skip to content

Latest commit

 

History

History
274 lines (223 loc) · 10 KB

48-81029-ed由来.sy.md

File metadata and controls

274 lines (223 loc) · 10 KB
show version enable_checker
step
1.0
true

范围控制

回忆上节课内容🤔

  • 我们这次研究了mark的定义和使用
    • mb定义
    • 'b跳转
    • 可以对marks,查询删除
  • 三种marks
    • 小写 本文件内
    • 大写 跨文件
    • 数字 配置文件中
  • 甚至可以在行编辑中,使用标记
    • 'a,'by从标记a的行复制到标记b的行
    • 'a,'bt.把从a到b的行复制到当前位置
    • 'a,'bm$把从a到b的行移动到文档最后
  • 行编辑模式可真是太方便了!
  • 可是,你知道吗?
  • 行编辑模式来自于ed
  • 是当时的无奈之举?
  • 怎么回事?🤔

原始状态

  • 我们从时间线捋回去,会发现vi进化过程沿着
  • ed->ex->vi->vim
  • 最早来自于贝尔实验室的Ken Tompson

图片描述

QED

  • 1966 年,贝尔实验室聘用了 Ken Thompson
  • Thompson刚刚在加州大学伯克利分校完成了电气工程和计算机科学的硕士学位在伯克利他使用一个名为 QED 的文本编辑器
  • 该编辑器在 1965 到 1966 年间被开发用于伯克利分时系统
  • Thompson 到达贝尔实验室后做的第一件事就是为麻省理工学院兼容分时系统重写 QED
  • 他后来又为 Multics 项目写了另一个版本的 QED
  • 在重写过程中,他对程序进行了扩展
  • 以便用户可以在文件中搜索某一行,并使用正则表达式进行替换。

开始

  • 与伯克利的分时系统一样
    • 由麻省理工学院、通用电气和贝尔实验室合作的 Multics 项目试图创建一个可行的商业分时操作系统
    • 最终,AT&T 认为这个项目毫无进展并退出
  • 在没有分时系统的情况下
    • Thompson 和贝尔实验室资深研究员 Dennis Ritchie
    • 开始怀念分时系统所提供的“交互式计算的感觉”
    • 并着手创建他们自己的版本
    • 该版本最终发展成为 Unix。1969 年 8 月
  • 在妻子和幼子外出去加州度假时
    • Thompson “给操作系统、shell、编辑器和汇编程序分别分配了一个星期”
    • 将新系统的基本组件组合在一起

ed

  • 这个编辑器被称为 ed
    • 它是基于 QED 的,但并不完全是 QED 的复现
    • Thompson 决定放弃某些 QED 的功能
    • 弱化了对常规的表达式的支持
    • 因此 ed 只能理解相对简单的正则表达式
  • QED 允许用户打开多个缓冲区同时编辑多个文件
    • 但是 ed 一次只使用一个缓冲区
    • QED 可以执行包含命令的缓冲区
    • ed 则不能。这些简化可能是必要的
    • Dennis Ritchie 曾说过
    • 去掉 QED 的高级正则表达式是“并不大的损失”

ed

  • ed 现在是 POSIX 规范的一部分
  • 所以如果你有一个符合 POSIX 的系统
  • 你的电脑上就安装了 ed
  • 现在,许多 ed 命令都是 Vim 的一部分
  • 因此,这就值得摆弄一番了
  • 你必须使用 w 命令来写入磁盘缓冲区
  • 必须使用 q 命令来退出编辑器

图片描述

  • 这两个命令可以写在同一行命令中,也就是 wq
  • edVim 一样
  • 是一个模态编辑器
  • 若要从命令模式进入输入模式
  • 取决于你试图如何转换文本
  • 需使用 insert 命令(i)、append 命令(a)或 change 命令(c)
  • ed 还引入了 s/foo/bar/g 语法来查找和替换文本

名字由来

  • ed 名字来自于 editor 编辑器
    • ed 不允许你编辑开放缓冲区中那些被其他行围绕的行
    • 也不允许移动光标
    • 因为 ed 在每次修改的时候都必须重新打印整个文件
  • 在 1969 年
    • ed 没有任何机制来“清除”屏幕上的内容
    • 因为”屏幕“就是一张纸
    • 所有已经输出的东西都像是已经用墨水打印出来了
    • 可以使用列表命令(l)要求 ed
    • 打印出一系列的行,但是大多数时候,你都是在你看不到的文本上操作
    • 因此,使用 ed 就像是尝试用一个低电量的手电筒在黑暗房间中摸索
    • 每次你只能看到那么一点儿,所以必须尽最大努力去记住每件东西的位置

图片描述

来试试 ed

  • 可以sudo apt install ed
  • 来装一下 vi 的老祖宗
    • ls -lah > oeasy.txt
    • ed oeasy.txt
    • 1显示第1
    • 2,5p,显示25
    • 我们能感觉到显示器其实是一张纸
    • 这个4,6p命令在vi也能用,含义是print
    • 8s/oeasy/o2z/
    • w保存
    • q退出

文本编辑器 em

  • ThompsonRitchie 来说, ed 已经足够好了
  • 但是其他人则认为它很难用
  • 而且它作为一个淋漓尽致地表现 Unix 对新手敌意的例子而臭名昭著
  • 在 1975 年
    • 一个名叫 George Coulouris 的人`
    • 这位前辈很神奇,他的爸爸是英国演员,出演过公民凯恩
    • 在伦敦玛丽皇后学院的 Unix 系统上开发了一个改进版 ed
    • Coulouris 利用他在玛丽女王学院的视频显示器开发他的编辑器
  • ed 不同的是
    • Coulouris 的程序允许用户编辑在屏幕中的一行代码
    • 通过一次次击键的方式来操作行(想象一下在 Vim 中每次编辑一行)
    • Thompson 拜访玛丽女王学院时,看到 Coulouris 已经写好的程序
    • 驳斥道他不需要在编辑文件的时候看到它的状态
    • 受此启发,Coulouris 将他的程序命名为 em
    • 或者“为凡人而生的编辑器”
    • the editor for mortals,这也是 em 名字来源。

图片描述

(George Coulouris)

ex

  • 1976年
    • Coulourisem 引入了加州大学伯克利分校
    • 在那里他用了一个夏天的时间在 CS 系访学
    • 这是 Ken Thompson 离开伯克利去贝尔实验室工作十年之后的事了
  • 在伯克利,Coulouris 遇到了 Bill Joy
    • 一名研究生。Coulouris 斯向 Joy 展示了 em
  • JoyCoulouris 的源代码为基础
    • 为扩展 ed 建立了一个名为 ex 的改进版 ed
    • 1978年,1.1 版本的 ex 与第 1 个版本的 BSD Unix 捆绑在一起
    • ex 在很大程度上与 ed兼容

图片描述

  • 我们今天也管底行命令模式叫做
    • ex command-line Mode

ex的新模式

  • 但它增加了两种模式
    • “开放”模式
      • 这种模式可以使 em 单行编辑成为可能
    • “可见”模式
      • 这种模式会占据整个屏幕
      • 并且可以像我们今天所习惯的那样
      • 对整个文件进行实时编辑

图片描述

(Bill Joy)

继承

  • ex遗留到vim的中特性包括
    • 当然hjkl是最基本的
    • .exrc进行runcommand配置
    • undo撤销虽然只有一层
    • 可以使用swap备份文件
    • 可以执行寄存器中的命令
    • 可以递归的映射

图片描述

  • 甚至那个时候可以用vim玩迷宫
  • 用映射去进行移动

vi

图片描述

  • 1979 年
    • 第 2 版 BSD 引入了一个名为 vi 的可执行文件
    • 它只在可视模式下打开 ex
    • vi 名字来自于 visual 可视模式

进化

  • ex/vi (后来称为 vi)建立了我们现在使用的 Vim 中大多数的约定
  • 但这些约定当时并不是 ed 的一部分
  • Bill Joy 使用的视频终端是 Lear Siegler ADM-3A
    • 它的键盘没有光标键。而是,h、j、k 和 l 键上绘制光标键
    • 所以 Bill Joy 在vi 中就使用这些键来进行光标移动
    • ADM-3A 键盘上 escape 键位置是今天我们所使用的键盘上的 tab

图片描述

  • 这也就解释了esc 虽然很远
  • 但是会被用来实现像退出当前模式这样高频的操作
  • 前缀命令的 :字符同样也来自 vi
    • 它在常规模式下(即运行 ex 进入的模式)使用 : 作为提示
    • 这解决了一个 ed 中被长期诟病的问题
    • 也就是一旦启动之后
    • 没有任何反馈信息向用户致以问候
  • 在正常模式下
    • 保存和退出需要使用现在仍在使用的经典 wq
  • 原始 vi 部分还包括
    • yanking和putting
    • 标记marker
    • 以及用于设置选项的 set 命令
  • 今天在 Vim 中使用的的基本文本编辑过程
    • 都是 vi 中使用的特性

vi

  • vi 是除 ed 之外唯一与 BSD Unix 捆绑的文本编辑器
    • Emacs 可能会花费数百美元
    • 这是在 GNU Emacs 之前
    • 所以 vi 变得非常流行
  • vied 的直接衍生版本
    • 这意味着如果没有 AT&T 的源代码
    • 源代码就不能被修改
  • 这促使一些人创建了 vi 的开源版本
    • STEVIE (专门为 VI 爱好者的 ST 编辑器)出现于1987年
    • Elvis 出现于 1990 年
    • nvi 出现于 1994 年
    • 微软dos上也有了类似的东西
      • 行编辑器edlin
      • 全屏编辑器edit
    • 其中一些克隆版本添加了额外的功能
    • 如语法高亮和窗口分离
  • 众多克隆中比较出色的是Elvis
    • 它的许多功能被整合到 Vim
    • 因为许多 Elvis 用户推动了这些功能的加入
    • minix之父Andrew Tanenbaum 甚至把Evlis列为minix默认编辑器
  • GUI变得开始流行
    • 但是也有人给 Elvis 加了一个图形用户界面
    • 然后就当商业软件来卖
    • 这些人没有写Elvis却挣了很多钱
    • Elvis无法得到相应的资源和回馈

图片描述

总结

  • 我们这次研究 ed 的历史
  • 为什么会有行编辑器这种东西
    • 竟然是当年
    • 没有显示器只有纸的时代的无奈之举
    • vim 进化到今天
    • 依然好用
    • 而且 ssh 的时候直接 vim 就很方便
  • 命令行还有什么好玩的么?🤔
  • 下次再说 👋