我经常看到教程、YouTube 视频、工作中的同事甚至书籍都说可以使用“vi”编辑器编辑文件。
我主要担心的是 vi,作为 70 年代中期的原始应用程序,甚至不再与 Linux 发行版打包在一起,而且这种情况已经持续了很多年。
为什么该vi
命令存在于 Ubuntu 中,与 vim 相比,运行它有什么优势?
当我阅读 Ansible 教程时,这一切都浮现在我的脑海中,其中一个“技巧”是:
您可以
vi
在终端中输入以打开 Vi 编辑器
本教程来自 2018 年。
我知道当你输入时vi
,它实际上会在许多发行版中运行 vim.tiny。
答案1
刚安装的 Ubuntu 系统有vi
命令,没有vim
命令。在此配置中,vi
是一个符号链接,最终解析为,正如您提到的。但是,如果安装了vim.tiny
提供 Vim 二进制文件的其他软件包之一,例如vim.nox
或vim.gtk3
(由vim-nox
和软件包提供),那么,以及将是符号链接,最终解析为功能更齐全的二进制文件。您可以重新配置它,但人们很少这样做。因此,运行是一种相当可靠的打开类似 vi 的编辑器的方法。vim-gtk3
vi
vim
vi
至于为什么人们有时称它为 vi,你说得对,这个名字有些不准确。部分原因是印刷上的。vi
毕竟,它是一个命令。部分原因是不一定有更好的名字。提供命令的 vi 类编辑器不一定vi
是 Vim;即使在 Ubuntu 中,也有各种其他 vi 样式的编辑器可以配置,甚至在其他系统上也不必开始。(你在 Ask Ubuntu 上问了这个问题,所以我猜你主要对 Ubuntu 范围内的这个问题感兴趣。)
但部分原因是vi
Ubuntu 中的命令是众多具有传统名称但实际上是不同程序的命令之一,更确切地说是不同的名称。例如,人们有时称其为/bin/sh
“Bourne shell”。如今,这在大多数类 Unix 系统上都不正确,在 Ubuntu 或其他 GNU/Linux 系统上也不正确。一般来说——并考虑到不同操作系统中的不同 shell 是如何提供它的,以及管理员可以更改哪个 shell 提供它——最好说是“POSIX 兼容 shell”,或者甚至更好,“至少当sh
它看到它被命名为 时,主要尝试遵守 POSIX 要求的 shell sh
”。
正如 Bourne shell 与较旧的 Thompson shell 不兼容,但被称为sh
,正如 POSIX shell 实现与 Bourne shell 不兼容,但被称为sh
(或者,无论如何,通常通过称为 的符号链接运行sh
),许多系统(包括 Ubuntu)都附带一个不是原始 vi 编辑器的命令,但被称为vi
。你说得对,这不是真的vi——除非人们指的是通过输入以下命令来运行的任何编辑器vi
,是人们常常的意思。
顺便说一句,您可能已经意识到,与 之类的命令相比,vim.tiny
的行为方式更传统,并且具有更传统的受限功能集vim.nox
。因此,在vi
未安装其他 Vim 相关软件包的 Ubuntu 系统中,该命令类似于 vi。
答案2
两个原因
因为 vi 是 POSIX 标准指定的,并且将在包括 Ubuntu 在内的所有 POSIX 兼容系统上可用,而 vim 是 GNU 版本。您不应该关注 vi 与 vim,而应该关注一致的行为和功能。请参阅https://pubs.opengroup.org/onlinepubs/009695399/utilities/vi.html。
vi 存在多个克隆。