我认为我说的对,RedHat 和其他发行版都提供了 vi和Vim。
是否有人知道提供这两者的理由是什么?假设提供 Vim 后它就涵盖了 vi 的功能?
ETA:这不是符号链接,它们是不同的二进制文件。
$ ls -lh /bin/vi
-rwxr-xr-x 1 root root 747K Jul 7 2012 /bin/vi
$ ls -lh /usr/bin/vim
-rwxr-xr-x 1 root root 1.9M Jul 7 2012 /usr/bin/vim
答案1
老问题了,但事实确实如此。Redhat 提供了 vi,消除了对 /usr 的依赖(ftdetect 除外 - 可能无害),以及大量曾经存在安全问题的模块。Vim 是 vim-enhanced 的一部分,默认情况下不会安装在服务器版本上。它包含 /etc/profile.d 中的脚本,用于在未设置时为 vim 指定别名,并且 euid > 200。每个都有两个 rc 文件,vi 的 .virc 和 vim 的 .vimrc,这导致很多人绞尽脑汁想为什么它在一个地方有效,而在另一个地方无效。
还有其他方法可以做到这一点,但你可以通过两种方式看到每种方式的作用:
(vi|vim) -V
strace (/usr/bin/vi|/usr/bin/vim) -c q # quit immediately
答案2
RedHat 及其变体/克隆版本倾向于提供 /bin/vi,它本质上是使用最少的功能和较少的库依赖项编译的 Vim,因此即使在文件系统损坏的情况下也更有可能运行。它也比“普通”或“巨大”版本的 Vim 要小,这曾经是一个考虑因素,即使现在它不再那么重要。
基本上,它是为需要文本编辑器且至少对 vi 有一定了解的用户和管理员提供的“后备”工具。对于那些想要更强大的编辑器的用户,他们通常必须明确安装“vim-enhanced”或他们的发行版为“全功能” Vim 提供的任何工具。
我见过更小的版本vi
或类似 vi 的编辑器,它们不是某些紧凑发行版使用的精简版 Vim。Busybox 集成了一个。
答案3
不,你错了。
Redhat 和所有其他发行版都提供vi
了vim
命令但它们不是单独的可执行文件:vi
只是指向的符号链接vim
。这在每个 UNIXy 系统上都会发生,因为vi
命令是标准的一部分因此,如果系统声称符合 UNIX 标准,就必须提供该功能。
大概在某个时候,大多数发行版决定使用vim
而不是原始版本vi
(出于我不知道的原因:架构兼容性?现代功能?其他?)。这就是为什么你会同时获得vi
和vim
。