为什么人们仍然在命令提示符下输入“vi”而不是“vim”?

为什么人们仍然在命令提示符下输入“vi”而不是“vim”?

我经常看到教程、YouTube 视频、工作中的同事甚至书籍都说可以使用“vi”编辑器编辑文件。

我主要担心的是 vi,作为 70 年代中期的原始应用程序,甚至不再与 Linux 发行版打包在一起,而且这种情况已经持续了很多年。

为什么该vi命令存在于 Ubuntu 中,与 vim 相比,运行它有什么优势?

当我阅读 Ansible 教程时,这一切都浮现在我的脑海中,其中一个“技巧”是:

您可以vi在终端中输入以打开 Vi 编辑器

本教程来自 2018 年。

我知道当你输入时vi,它实际上会在许多发行版中运行 vim.tiny。

答案1

刚安装的 Ubuntu 系统有vi命令,没有vim命令。在此配置中,vi是一个符号链接,最终解析为,正如您提到的。但是,如果安装了vim.tiny提供 Vim 二进制文件的其他软件包之一,例如vim.noxvim.gtk3(由vim-nox和软件包提供),那么,以及将是符号链接,最终解析为功能更齐全的二进制文件。您可以重新配置它,但人们很少这样做。因此,运行是一种相当可靠的打开类似 vi 的编辑器的方法。vim-gtk3vivimvi

至于为什么人们有时称它为 vi,你说得对,这个名字有些不准确。部分原因是印刷上的。vi毕竟,它是一个命令。部分原因是不一定有更好的名字。提供命令的 vi 类编辑器不一定vi是 Vim;即使在 Ubuntu 中,也有各种其他 vi 样式的编辑器可以配置,甚至在其他系统上也不必开始。(你在 Ask Ubuntu 上问了这个问题,所以我猜你主要对 Ubuntu 范围内的这个问题感兴趣。)

但部分原因是viUbuntu 中的命令是众多具有传统名称但实际上是不同程序的命令之一,更确切地说是不同的名称。例如,人们有时称其为/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

两个原因

  1. 因为 vi 是 POSIX 标准指定的,并且将在包括 Ubuntu 在内的所有 POSIX 兼容系统上可用,而 vim 是 GNU 版本。您不应该关注 vi 与 vim,而应该关注一致的行为和功能。请参阅https://pubs.opengroup.org/onlinepubs/009695399/utilities/vi.html

  2. vi 存在多个克隆。

相关内容