Vim - 朋友们
Vim - 它的传承与同期发展
Section titled “Vim - 它的传承与同期发展”Vim (Vi IMproved) 是原始 vi 编辑器的一个非常流行的克隆版本。理解 vi 的历史和其他 vi 克隆版本有助于体会 Vim 的设计理念及其广泛的功能集。本章将简要探讨 vi 及其一些值得关注的派生版本。
在本章中,我们将讨论:
- Vi - 原始版本
- Stevie - 一个早期克隆
- Elvis - 一个更强大的克隆
- nvi - BSD Vi
- Vim - Vi 改进版
- Vile - 类似 Vi 的 Emacs
- 关于 Neovim 的说明
- 与原始 Vi 的兼容性
Vi - 原始版本
Section titled “Vi - 原始版本”vi (Visual 的缩写) 是一个面向屏幕的文本编辑器,最初为 Unix 操作系统创建。Bill Joy 于 1976 年编写了最初的代码,并作为 Berkeley Software Distribution (BSD) 的一部分首次发布。vi 是行编辑器 ed 的演进版本,它为文本编辑带来了全屏界面,这在当时是革命性的。
vi 引入了模式编辑的概念,将用于输入文本、执行命令和选择文本的模式分开。这一核心设计原则被 Vim 继承,是其高效性的基础。
Stevie - 一个早期克隆
Section titled “Stevie - 一个早期克隆”Stevie (ST Editor for VI Enthusiasts) 是最早的 vi 克隆版本之一,由 Tim Thompson 为 Atari ST 平台开发,于 1987 年发布。它提供了 vi 功能的子集,在不同系统上提供了熟悉的类似 vi 的环境。
Elvis 由 Steve Kirkendall 开发,旨在成为比 Stevie 更完整的 vi 克隆版本。它通过引入缓冲区解决了 Stevie 的一些限制,例如将整个文件加载到 RAM。Elvis 还添加了语法高亮、多窗口支持和基本网络功能等特性,预示了 Vim 的一些进步。
nvi - BSD Vi
Section titled “nvi - BSD Vi”nvi (new vi) 由 Keith Bostic 开发,旨在成为原始 vi 的一个完全兼容的替代品。这是由于 AT&T ed (以及 vi) 代码的许可问题所致,这些问题阻止了其与 BSD 的免费分发。nvi 是许多 BSD 派生系统(包括 FreeBSD、NetBSD、OpenBSD 和 macOS,通常可在 /usr/bin/vi 找到)附带的 vi 版本。
Vim - Vi 改进版
Section titled “Vim - Vi 改进版”Vim 由 Bram Moolenaar 创建,于 1991 年作为 Amiga 上的一个 vi 克隆版本开始 (最初称为 Vi IMitation)。自那时起,它已发展成为一个功能强大得多的编辑器,在保持强大的 vi 兼容性的同时添加了大量功能。Vim 的主要增强功能包括:
- 多级撤销
- 多窗口、多标签页和多缓冲区
- 用于扩展功能的强大脚本语言 (Vimscript)
- 对数百种编程语言和文件类型进行广泛的语法高亮
- 用于文本选择的可视化模式
- 命令行历史和自动补全
- 内置帮助系统
- 与编译器、解释器和调试器的集成
- 支持插件和庞大的社区贡献生态系统
Vile - 类似 Vi 的 Emacs
Section titled “Vile - 类似 Vi 的 Emacs”Vile (VI Like Emacs) 是一个试图结合 vi 和 Emacs 功能的编辑器。它保留了 vi 的模式编辑,但融合了 Emacs 风格的功能,如多缓冲区和窗口,以及过程式扩展语言。
关于 Neovim 的说明
Section titled “关于 Neovim 的说明”Neovim 是一个重要的、更晚出现的 Vim 分支,始于 2014 年。它旨在积极重构 Vim 的代码库,以提高可维护性,鼓励社区贡献,并实现新的功能,例如更好的异步处理、一流的 Lua 脚本支持和嵌入式终端。Neovim 在保持与 Vim 核心功能和 Vimscript 兼容性的同时,在可扩展性以及与现代开发工具 (例如 Language Server Protocol) 的集成方面不断突破。
与原始 Vi 的兼容性
Section titled “与原始 Vi 的兼容性”虽然提到的所有编辑器都是 vi 的克隆或派生版本,但它们与原始 vi 的兼容性各不相同。特别是 Vim,它旨在实现高度的 vi 兼容性 (尤其是在通过 :set compatible 运行于兼容模式时),这意味着大多数 vi 命令在 Vim 中都可以按预期工作。然而,Vim 的默认模式 (nocompatible) 启用了许多改进功能,这些功能与严格的 vi 行为有所不同。
| 克隆/派生版本 | 大致 Vi 兼容性 | 关键特点 |
|---|---|---|
| Stevie | 低 | Vi 功能的基本子集。 |
| Vile | 低-中 | 具有类似 Emacs 功能的 Vi 模式。 |
| Elvis | 中-高 | 更完整的 Vi 克隆版本,增加了功能。 |
| nvi | 非常高 | 旨在成为一个完全兼容的替代品。 |
| Vim | 非常高 (高度兼容) | 在兼容模式下与 Vi 几乎相同,在默认模式下有大量改进和新增功能。 |
| Neovim | 非常高 (兼容 Vim) | 在保持 Vim 兼容性的同时,致力于现代化代码库和架构。 |
了解这一演变过程,有助于突出 Vim 坚实的基础及其演变为当今最强大、最通用的文本编辑器之一的历史。