Vim 是经验丰富的系统管理员的绝佳选择。然而,NeoVim 在开发人员中聚集了大量追随者。
想知道为什么更多的开发人员选择 NeoVim 而不是 Vim?作为一名热心的 NeoVim 用户,我可以想到以下原因。
1、项目维护和功能改进
你可能想知道“Vim 如此流行,尤其是因为‘我已经无法退出 Vim 了’,Vim 将成为用户的首选。为什么有人会分叉 Vim 并冒着浪费开发时间呢?”
这个问题提的好。Vim 真的很受欢迎!但这并不意味着开发 Vim 的社区对项目本身的状态感到满意。
相关:Vim 9.0 重大更新,Linux 编辑器使用新的脚本语言 https://www.linuxmi.com/vim-9-0.html
Vim 目前的代码库存在两个问题:
- Vim 的首席开发人员一直没有将 Vim 的开发培养成一个社区友好的项目,Vim 的主要开发和讨论还是在邮件列表 上。NeoVim 自诞生以来,它就专注于提高自己的扩展性与易用性,例如内置终端、异步执行这两个比较重要的功能、弹出窗口(用于显示调试消息和自动完成建议),后来由于社区“压力”而被 Vim 采用。
- 与 Neovim 相比,Vim 代码库的可维护性较差。
2、代码自动完成(LSP)
LSP 或语言服务器协议是一种协议,它定义了编辑器如何与“语言服务器”通信以启用代码突出显示、语法检查、代码完成、嵌入提示、类型提示等选项。
无论您是多么优秀的开发人员,在编辑器中获得类型提示、错误突出显示等功能都可能不会让您成为更好的开发人员。尽管如此,它无疑会减少您的开发和/或调试时间。
Neovim 附带了对 LSP 的开箱即用支持,并使用 Lua 进行进一步配置。然而,Vim 需要一个外部插件来实现这个功能。
3、支持更好的插件
插件是插入现有事物并为其添加新功能的东西。在这种情况下,编辑器插件是插入编辑器并提供更多功能的东西。
Vim 已经拥有丰富的插件支持和生态系统,以至于有专为 Vim 设计的插件管理器!
但是 Neovim 通过允许插件使用“更通用的语言”在 Lua 中编写插件来超越 Vim 。并不是说 Vim 的内置语言不好,而是如果您想要类似 IDE 的功能,设置会变得很复杂。而且,对于实际的编程语言,这种配置比 Vim 更容易。
这意味着您甚至可以扩展或修改核心的 Neovim功能。
这是Neovim 专用的插件列表,因为 Vim 不提供类似级别的可扩展性。
4、并行启动
我在上面讨论过,Neovim 使用 Lua 作为插件配置的可选但附加的语言。但是你知道 Neovim 并行启动每个插件吗?
这应该会让你感觉使用 Neovim 更快,特别是如果你有需要几秒钟初始化的插件!
5、能够嵌入编辑器
由于 Neovim 编辑器的代码库比 Vim 更容易维护,将核心编辑器嵌入到其他东西中的可能性成为现实。
你现在终于可以在 VS Code 中拥有一个好的编辑器😎
6、配置文件的位置
使用 Vim 后,当我需要将跨发行版迁移到新的不同 Linux 发行版时,我通常会忘记备份~/.vimrc文件,因为它不在我的~/.config目录中。
大多数现代 Linux 应用程序都遵循称为 XDG(Cross Desktop Group)的标准。该标准定义了各种内容,但在本例中最重要的内容之一是应用程序加载其配置文件的位置。
该标准规定用户特定的配置文件应存储在~/.config目录中。Neovim 坚持这一点,主要配置文件 ( init.nvim) 存储在~/.config/nvim/目录中。
这是一个小问题,但在备份计算机上的重要文件时,它的重要性很高。
7、在 Neovim 中进行的优化
在我谈论优化之前,请注意这两个编辑器的速度都足够快,以至于在日常任务中都不会感觉比另一个更快。但我觉得有必要分享这个。
Neovim 对其如何响应用户命令进行了多项优化。例如,使用以下命令:
如果您在 Vim 中执行上述命令,它将找到所有具有您指定的正则表达式模式的行并删除这些行。这不是Vim 要做的全部。该d密钥还将删除的文本复制到寄存器(剪贴板)。
这意味着,Vim 将执行以下操作:
- 找到与模式匹配的行
- 复制到寄存器
- 删除行
- 如果还有其他匹配模式的行,则转到步骤 1
如果不需要第 2 步,可以在 Vim 中使用以下命令:
上面的命令除了将行复制到寄存器之外,将执行所有操作,从而加快操作速度。假设您在 Neovim 中运行前面的命令(没有下划线)。在这种情况下,它会注意到您正在尝试删除多行,并将通过包含下划线自动“优化”它。
好处:更好的开箱即用配置
这有点个人意见,但如果你是 Vim 或 Neovim 的新手,我建议你从 Neovim 开始你的旅程。两个编辑器都可以配置,但 Neovim 有更好的默认值。
例如,Neovim 默认启用以下特性:
- autoindent默认启用
- background默认为“dark 暗模式”,除非由终端明确设置
- hlsearch(高亮显示所有匹配项)默认启用
尽管随着 Vim 的更新版本,这可能会有所改变,因为这两个编辑器都在不断发展。
结论
Vim 的创建是为了改进现有的 Vi 编辑器。它代表 V 改进。同样,NeoVim 的创建是为了改进现有的 Vim 编辑器。它代表新 Vim。
自从我尝试并愉快地将我所有的 Vim 配置迁移到 Neovim以来,我已经成为 Vim 用户两年了。本文概述了为什么有人会选择 Neovim 而不是传统的 Vim。