如何对比评价vim-8和neovim?

最近在选择vim8还是neovim,大家可以介绍一下他们的不同吗?
关注者
260
被浏览
787,127

12 个回答

neovim 的出现逼着 vim 在去年达到了有史历来最多的提交数。

neovim 相比 vim 目前要多 remote plugin 以及内置 terminal 两个主要功能。

选择的话你可以先用 vim ,对 neovim 功能有需要再考虑切换,如果不是使用仅支持 vim8 的插件,切换成本是很低的。

2022/4/30 更新:

时间已来到了 2022年,Vim 的最新版本是8.2.4609,而 Neovim 也发布了 0.7 版本,原先最先在Neovim 上实现的一些功能如 floating window,内置 terminal 也逐渐在 Vim 中得到了实现。可以说 Neovim 项目的竞争压力确实加速了 Vim 的演变。然而 Neovim 在开发新功能的速度上仍然更胜一筹,下面可以再举出两例 Neovim 的独占功能:

  • Virtual Text。可以让插件在编辑框中显示不能编辑的虚拟文本,这使得像 VS Code 那样的 Inlay hint 成为可能。下面是 rust-tools 插件的效果。

另外 GitHub 和 OpenAI 开发的 AI 代码补全软件 Copilot 的 Vim 插件也因为使用了 virtual text 功能而成为了 Neovim 独占。

  • Tree-sitter 支持。tree-sitter 提高了代码高亮性能,而且提供了更加准确的语法信息。例如可以识别出 Lua 中内嵌的 Vim 代码并按照 Vimscript 进行高亮:

使用配套的 Comment.nvim 插件,可以实现给内嵌的语言添加合适的注释。


Neovim 专注于后端和控制台,而 Vim 是一个TUI 和 GUI 兼顾的编辑器。所以 Neovim 与 Vim 8 的对比应该放在 TUI 层面上,与 gVim 对标的编辑器应该是 Neovim 的诸多前端如 NyaoVim Oni ,不在讨论范围。而在 TUI 层面上,虽然在主要的功能上两个编辑器大同小异,但 Neovim 要更胜一筹。

从项目的维度上看,Vim 8 的推出,很大程度 上是受了 Neovim 的影响,前面提到的异步通信和内置终端,都是在 Neovim 中首先实现的。 换言之,在编辑器的开发上面,Neovim 是领先于 Vim 的。这与项目组织方式有关。 虽然 Vim 也在 2014 年启用了 官方 Github 仓库 , 但 Vim 的主要开发和讨论还是在邮件列表 上。这当然有其历史原因,但 Neovim 完全拥抱 Github 的 开发方式 显然更友好。 另外,Neovim 长期在 Google Summer of Code 的列表中, 每年都有大学生为 Neovim 项目添加有趣的功能。例如在 2018 年的 GSoC 中, Utkarsh Maheshwari 对 UI 子系统底层做了修改,使得插件可以创建自定义的浮动窗口。 下图是插件 coc.nvim 的效果。



同时,Neovim 在很多细节上都比背着历史包袱的 Vim 要做得好。例如

  1. Neovim 不考虑 Vi 兼容的问题,所以有一个比较好的默认配置, 在全新安装的情况下也可以很好地工作;
  2. Neovim 遵守 XDG Base Directory 规范 ,生成的文件不会污染 home 目录;
  3. Neovim 支持一些现代终端模拟器的功能,例如它可以在插入模式和普通模式下使用不同形状的光标,可以识别粘贴行为并自动进入 paste 模式等。

修改: @残风 指出 Vim 也可以通过添加映射的方式支持 bracketed paste mode

本文衍生自 我的博客文章 ,采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议 进行许可。