vim 和 vi 之间的主要区别是什么?

vim 和 vi 之间的主要区别是什么?

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

这有点像询问bashand sh。 ViM 有一个特殊的选项compatible(命令行-C) - 请参阅 ViM 手册,然后打开它并尝试做一些工作。这还不到vi20 到 30 年前的一半(顺便说一句,当时键盘/终端通常缺少箭头和其他今天常见的特殊键)。

因此,如果您习惯了 ViM 并且最终在 vi 面前,您仍然可以做您的事情,但速度要慢得多,因为大多数事情都不起作用(要么根本不起作用,要么按照您期望的方式起作用)。

答案3

对我来说,语法高亮是最直接的。然后是自动缩进和自动注释行,因为我不断使用桌面上的粘贴。

此外,vim 还具有告诉您差异的附加功能

:help vi_diff

:help vim-additions

答案4

对我来说,Vim 的特性远不如 vi;例如,对于change 命令,文本将被删除,您插入文本而不是$放置在末尾的符号,并覆盖文本直到该符号。或多级撤消。或者窗口分割和缓冲区管理。

然后是可配置性:使用 vi,您可能有一些映射,更改一些选项。 Vim 有很多插件vim.org,带有大量语法和文件类型设置,并且有一个很棒的社区。

最后,在底层,Vimscript 具有(自版本 7 起)强大的数据类型,并且可以使用各种替代脚本语言,如 Python、Perl 或 Ruby。

相关内容