vi

发布: (2026年3月24日 GMT+8 19:24)
5 分钟阅读
原文: Dev.to

Source: Dev.to

人气

270 万人访问过 Stack Overflow 学习如何退出文本编辑器——相当于每 20 000 名访客中就有一位。在高峰时段,大约每小时有 80 人发现自己被意外打开的程序困住。

设计约束

计算机领域中最令人畏惧的工具也是最优雅的。比尔·乔伊(Bill Joy)当时是伯克利的研究生,使用 300 波特调制解调器在 ADM‑3A 终端上编写代码。屏幕重绘的速度慢得比他思考的速度还慢;每一次按键都要耗时,每一个多余的字符都会导致可见的延迟。

为了解决这些约束,乔伊构建了一个“毫不浪费”的编辑器:

  • 没有菜单。
  • 没有鼠标。
  • 没有装饰。
  • 每个键都有作用。

Escape 键现在位于 Tab 键所在的位置,因为在 ADM‑3A 上它只需动一根手指即可到达。hjkl 用来导航是因为 ADM‑3A 在这些键上印有箭头。: 进入命令模式是因为在那种键盘上输入冒号不需要 Shift

Vi 并不是为舒适而设计的;它是为 300 波特调制解调器而设计的。这一约束孕育了定义编辑器的语法。

命令语法

Vi 不仅仅是一个编辑器,它是一种语言。

d3w   # delete three words
ciw   # change inner word
yy    # yank (copy) this line
p     # put (paste) it back

每个命令由一个 动词、一个可选的 计数 和一个 名词 组成。学会 10 个动词和 10 个名词,你就拥有 100 条命令;学会各 20 个,你就拥有 400 条。

没有其他编辑器是这样工作的。大多数编辑器将操作映射到固定的键组合(例如 Ctrl+CCtrl+VCtrl+Shift+K),这些绑定需要记忆,而不是理解。Vi 给你一套语法,让你能够写出以前从未写过的句子。

一个三岁的小孩可以用动词和名词组合句子,而不必记住每一种可能的组合——这正是 vi 的工作方式。语言学家大概会赞同。

遗产与影响

Vi 已在 POSIX 中规范,并随每个 Unix 系统一起发布:每台 BSD 服务器、每个 Linux 发行版以及每台 macOS 机器。它自 1976 年起就存在——已有五十年的生产历史。

Bram Moolenaar 在 1991 年基于 vi 构建了 Vim。他维护了 32 年,创造了 “charityware” 这一概念,并呼吁用户向乌干达的孤儿捐款,而不是为软件付费。他于 2023 年 8 月 3 日去世,享年 62 岁。他所构建的编辑器运行在的机器数量,超过了历史上任何其他文本编辑器。

  • Vim:约 38 万行 C 代码。
  • VS Code:Electron、Chromium、Node.js,数百兆字节。

两者都用于编辑文本,但 1976 年的约束产生了一套编辑语法,现代编辑器尚未匹配——不是因为缺少功能,而是因为缺少一种语言。

Vi 是一个 50 年历史的证明:为约束而设计的工具,往往能够超越约束本身,长久存在。

Read the full article on vivianvoss.net →

0 浏览
Back to Blog

相关文章

阅读更多 »

Neovim 0.12.0

NVIM v0.12.0 构建类型:Release LuaJIT 2.1.1774638290 发布说明 - 更新日志 https://github.com/neovim/neovim/commit/fc7e5cf6c93fef08effc183087a2c8cc9bf...