Vi vs vim,或者,我有什么理由想要使用 vi?

fou*_*ric 111 vim vi

我对 *NIX 文本编辑器(目前正在从 迁移nanovim)有所了解,并且在 Unix 和 Linux SE 上看了一些之后,注意到vi在相当多的问题中使用了 'vim' 而不是 'vim'。我知道“vim”代表“Vi IMproved”,考虑到这一点,我想知道为什么有人宁愿使用vi 而不是vim。vi 比 vim 有什么明显的优势吗?

编辑:我认为我的问题被误解了。我知道,在大多数情况下,vim 比 vi 强大得多,功能也更完整。我想知道的是,是否存在 vi 优于 vim 的任何可能情况,例如更少的内存使用、在 *nix 系统上的流行等。

jll*_*gre 81

vi是(也是)POSIX 标准编辑器。有很多实现,vim可能是最受欢迎的。

虽然许多传统的 Unix 兼容操作系统提供vi非常接近标准的实现,vim但添加了许多额外的功能,使其成为一把双刃剑。

当然,这些扩展通常旨在简化编辑过程并提供有用的特性和功能。然而,一旦你习惯了其中的一些(不是像语法着色这样的装饰性的,而是那些改变编辑器行为的),你很容易忘记它们是特定的;使用不同的实现,包括基于原始 BSD 代码的实现可能会非常令人沮丧。反之亦然。

这与使用非 POSIX bashisms 的脚本面临更正统的 shell 实现(如dash或 )时发生的问题非常相似ksh


小智 32

没有 vi 与 vim 相比没有任何显着优势,而是相反。Vim 比 Vi 有更多的优势。你可能感兴趣:为什么,哦,为什么,做那些#?@!疯子们使用vi?

编辑还阅读:学习 VIM 值得付出努力吗?

  • 是的。我不使用任何 IDE,因为他们强迫您使用的编辑器不是 Vim。 (4认同)
  • IntellIJ 也有一个很好的 vim 插件,可以覆盖标准编辑器的行为。 (2认同)

小智 28

在用 Vim 舒适地编辑了我一生的大部分时间(不包括童年)之后,我花了大约一个月的时间只使用 vi。这样做时,我意识到我一直依赖 Vim 来满足我所有的文本修改需求。在使用 vi 之前,每当我不得不替换一些文本或在一大组文件中执行类似操作时,我只会在 Vim 中打开文件并运行:bufdo命令,每当我不得不缩进或格式化某些文件时,我会在 Vim 中打开它们并使用 Vim=gw命令。我依赖 Vim。在意识到 vi 没有这些命令后,我被迫使用sed其他程序执行批量文本转换并学到了很多其他程序,例如awkindent. 虽然我最后改回使用 Vim,但我通过使用功能较少的编辑器获得的知识非常丰富,并且被证明非常有用。除了学习文本编辑器之外的工具外,我还更好地了解了 vi。每当我在一个没有 Vim 的新系统或服务器上工作时,使用 vi 比在我为期一个月的远足之前更舒服。

另外,上个月我在便宜的 WM8650 平板电脑上安装了 Linux,发现 Vim 和 vi 之间存在明显的性能差异,所以我倾向于在平板电脑上使用 vi。

  • 我发现这是 IT 中的一个常见问题 - 帮助我们的工具也可以掩盖我们最好学习的东西。 (3认同)

gol*_*cks 13

没有 vim 我会很难生活,但我受不了 vi。然而,学习前者至少会让你知道如何处理后者。

默认情况下的 vim 界面实际上非常接近 vi。如果我在使用 vim 的系统上工作,我要做的第一件事就是将这些东西添加到~/.vimrc

syntax enable
set nocp
set wildmenu
Run Code Online (Sandbox Code Playgroud)

还有一堆我更喜欢的其他东西——nowrap 和编号等等——但没关系。“语法启用”只是打开基本语法突出显示(有点强大:filetype plugin on也是基本的);"nocp"关闭 vi 兼容性,正是这一点开始将 vim 与 ye olde vi 区分开来(例如,它使showmode整个体验变得更加人性化,因为您现在对自己是在命令中还是 ~INSERT 有了一些线索~模式)。“wildmenu”只是在做一些事情时给你一个水平完成菜单,这也让生活更轻松。

vim的文本编辑功能是首屈一指的——除了 emacs,我从未见过或听说过一款与之相近的软件。它们不容易学习,但是一旦您了解它们,它们的使用速度就会比鼠标菜单快得多,并且比基于鼠标菜单的界面中的简单键宏替代方案更具动态性。对于编程,我有时将 vim 与 Eclipse 等 IDE 一起使用,但我在 vim 中完成大部分工作。

如果你走这条路,哈哈,看看自动完成和标签列表插件。并提防阴暗面。


dch*_*kov 11

优点是 vi 通常预装在企业 UNIX 中,例如 AIX 或 Solaris。此外,在安装介质上无法访问 vim。