![vim 和 vi 之间的主要区别是什么?](https://linux22.com/image/28637/vim%20%E5%92%8C%20vi%20%E4%B9%8B%E9%97%B4%E7%9A%84%E4%B8%BB%E8%A6%81%E5%8C%BA%E5%88%AB%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
vi 和 vim 之间的一些主要区别是什么?是否存在任何显着的键盘快捷键差异,或者一个具有另一个没有的任何功能?是的,我确实知道我问了另一个与此类似的问题(Vi 与 vim,或者,我有什么理由想要使用 vi?),但该问题的目的并不是要对两者进行完整的比较,而只是询问是否存在任何可能的情况下 vi 具有优势。 这帖子是 vi 和 vim 功能集之间的直接比较。
编辑:我错了,这不是 vi 和 vim 功能之间的比较。 vim 是 Vi 的改进版,比 vi 有很多很多的功能。我想问的是,如果你一生都在使用 vi,有一天你坐下来开始使用 vim,会有什么不同呢?或者,如果您以前是 vim 用户并尝试过 vi,您会注意到什么差异?
答案1
这有点像问破旧的 Datsun 120Y 和保时捷之间有什么区别!
Vim 有一个民众普通旧 vi 不提供的功能:-
- 多个窗口 - 水平、垂直和选项卡。
- 视觉突出显示。
- 通过 :help 命令提供在线帮助。
- 将宏记录到寄存器中,然后可以执行。
- 多次撤消(和重做),而不是旧 vi 疯狂的撤消切换。
- 命令行历史记录、搜索历史记录。
- 嵌入了许多可用函数的完整语言,例如 getcwd()
- 大大扩展了模式匹配。
- 通过 ctrl-P 和 ctrl-N 完成单词。
- 内置的文件导航器(有点笨重,但很有用)。
- ESC 键实际上会退出您试图逃避的命令,而不是像 vi 那样(疯狂地)运行它们。
- 能够通过 bufdo、argdo 和 windows 在所有缓冲区、args 或窗口上运行命令。
我可以对它赞不绝口,vim 比普通的旧 vi 有更多的功能,真的没有可比性。
PS - 要真正使用普通的旧 vi,您必须在旧版 Unix 系统上工作,例如 Solaris(对不起,伙计们,事情就是这样)。当您认为自己在使用 vi 时,您很可能正在使用 vim,因为大多数 Linux 发行版只是将 vi 映射到 vim。如果 :help 有效,或者多次撤消有效,或者 :version 有效,那么您使用的是 vim,而不是 vi!
答案2
这有点像询问bash
and sh
。 ViM 有一个特殊的选项compatible
(命令行-C
) - 请参阅 ViM 手册,然后打开它并尝试做一些工作。这还不到vi
20 到 30 年前的一半(顺便说一句,当时键盘/终端通常缺少箭头和其他今天常见的特殊键)。
因此,如果您习惯了 ViM 并且最终在 vi 面前,您仍然可以做您的事情,但速度要慢得多,因为大多数事情都不起作用(要么根本不起作用,要么按照您期望的方式起作用)。
答案3
答案4
对我来说,Vim 的特性远不如 vi;例如,对于c
hange 命令,文本将被删除,您插入文本而不是$
放置在末尾的符号,并覆盖文本直到该符号。或多级撤消。或者窗口分割和缓冲区管理。
然后是可配置性:使用 vi,您可能有一些映射,更改一些选项。 Vim 有很多插件vim.org,带有大量语法和文件类型设置,并且有一个很棒的社区。
最后,在底层,Vimscript 具有(自版本 7 起)强大的数据类型,并且可以使用各种替代脚本语言,如 Python、Perl 或 Ruby。