nvim从零单排(一)

4 阅读5分钟

三年IDE,终生(众生)nvim


Tips:首先我对喜欢使用IDE流派有被冒犯的tx说声:没事忍忍就好了???。 开玩笑的,,其实我也偶尔还是会使用IDE的,但是这并不影响喜欢nvim

什么是nvim?

为什么是nvim?

nvim能干什么?

满脑子问号的请看过来,对对对,就是这,往下看,能到这能有这些问题的我看行,至少三年起步,你懂的,下面我们开始正题,挨个解决。

什么是nvim

nvim是neovim的简称,是一款终端文本编辑器,对就是你想的那样,就是那个在传说中神一般的存在vim,那既然有神了又为什么要nvim,看看都会抢答了,这是第二个问题。

为什么是nvim

要回答这个问题可以说每个人心中的哈姆雷特都不一样,但我只能说时代在进步,神也在进步,它不仅仅是简单的套个马甲(熟悉的 i/a/odd/yy/pp:/? 等操作),它让我们进入异步、懒加载、vim零成本学习且兼容,这么说可能不够具象化。

项目VimNeovim
定位通用文本编辑器(兼容 Vi)面向开发者的现代化编辑器(基于 Vim 重构)
核心目标稳定、兼容、轻量现代化、可扩展、高性能、拥抱新生态
开发模式保守(由 Bram Moolenaar 主导,更新慢)社区驱动(开源组织维护,迭代快)
兼容性完全兼容 Vi,向下兼容老配置兼容 Vim 核心语法,但逐步淘汰老旧特性

一、核心架构与性能差异

1. 异步 IO(最核心区别)

  • Vim:核心是同步阻塞模型,执行外部命令(如 LSP、代码格式化)会卡住编辑器,直到命令完成;仅在 Vim 8 后新增有限的异步支持,但体验差。
  • Neovim:从底层重构为异步非阻塞架构,执行 LSP、终端、插件命令时完全不卡界面,这也是 Neovim 能流畅支持现代 LSP / 补全的核心原因。

2. 进程模型

  • Vim:插件 / 命令运行在主进程,单个插件崩溃可能导致整个编辑器卡死。
  • Neovim:支持隔离的 RPC 进程,插件可运行在独立进程(如 Lua 插件、Python 插件),崩溃不影响主程序,且能利用多核 CPU。

3. 启动 / 运行性能

  • Vim:启动快,但加载多插件后性能下降明显(同步加载)。
  • Neovim:原生支持懒加载(Lazy Loading),配合 Lazy.nvim 等插件管理器,即使装几十款插件,启动时间仍能控制在 50ms 内;且异步架构让运行时更流畅。

二、功能特性差异(核心亮点)

1. 配置与脚本生态

特性VimNeovim
核心脚本语言Vimscript(老旧、语法反人类)原生支持 Lua(现代、高性能、易扩展)+ 兼容 Vimscript
配置文件.vimrc(Vimscript)init.lua(Lua)+ 兼容 .vimrc
API 扩展性有限的 Vimscript API丰富的 Lua API + 原生 RPC API(支持多语言调用)
模块化配置无原生支持(需手动拆分)原生支持 Lua 模块(require("module")),配置更易维护

关键:Neovim 的 Lua 生态是其碾压 Vim 的核心 —— 现代插件(如 Lazy.nvim、nvim-treesitter、LSP 相关)均基于 Lua 开发,Vim 无法兼容这些插件。

  1. 现代开发功能
功能VimNeovim
LSP(语言服务器)需第三方插件(如 YouCompleteMe),体验差原生内置 vim.lsp API,配合 nvim-lspconfig 一键配置,流畅支持所有语言 LSP
代码补全基础补全(omnifunc),无模糊匹配原生支持 cmp 框架(如 nvim-cmp/blink.cmp),高性能模糊匹配补全
语法高亮基于正则(慢、精度低)原生支持 Treesitter(基于语法解析,高亮精准、性能高)
内置终端Vim 8 后新增,但体验差(同步)原生异步终端(:terminal),可分屏嵌入、无卡顿
浮动窗口 / 弹窗无原生支持原生支持浮动窗口(用于 LSP 悬浮文档、弹窗菜单)
多线程 / 多核利用不支持原生支持(插件可并行运行)

3. 界面与交互

  • Vim:仅支持传统窗口布局,无原生悬浮元素,UI 定制能力弱。

  • Neovim

    • 原生支持浮动窗口、圆角边框、透明背景;
    • 支持 nvim-notify/noice.nvim 等现代化通知 / 消息插件;
    • 支持 GUI 前端(如 Neovide、WezTerm 集成),体验接近现代 IDE。

4. 兼容性与迁移

  • Vim → Neovim:几乎无缝迁移 ——.vimrc 可直接复用,Vimscript 插件 99% 兼容,只需少量调整(如 Leader 键配置)。
  • Neovim → Vim:无法迁移 ——Neovim 的 Lua 配置、Treesitter/LSP 原生 API、浮动窗口等特性,Vim 完全不支持。

三、生态差异

1. 插件生态

  • Vim:插件多基于 Vimscript,更新慢,现代开发相关插件少(如无成熟的 LSP 配套插件)。

  • Neovim

    • 插件生态爆炸式增长,几乎所有优质插件均为 Neovim 专属(如 Lazy.nvim、nvim-tree、lualine、noice.nvim);
    • 插件质量高、迭代快,社区活跃(GitHub 星数 Neovim 已超 Vim)。

2. 社区支持

  • Vim:社区趋于稳定(老化),核心功能更新极少。
  • Neovim:社区年轻、活跃,问题响应快,新功能(如内置 AI 集成、更好的 Treesitter 支持)持续迭代。

nvim能干什么?

我只能说:nvim你值得拥有。我知道下面说的可能有些人会说vim也能完成,但是我想说的是时代在进步,可以对比一下那些插件的维护活跃性就知道我说的,可能说的有点简单,但是绝不简单,纸上得来终觉浅,绝知此事要躬行。

适用场景

选 Vim 的情况

  1. 运行环境极度受限(如老旧服务器,仅预装 Vim,无法安装 Neovim);
  2. 只需要基础文本编辑(如修改配置文件),无需现代开发功能;
  3. 依赖某个仅支持 Vim 的老旧插件,且无法替代。

选 Neovim 的情况

  1. 作为主力开发编辑器(写代码、调试、项目管理);
  2. 想要现代化的 LSP / 补全 / 语法高亮体验;
  3. 希望配置易维护(Lua 模块化)、启动快(懒加载);
  4. 追求定制化(UI 美化、快捷键、工作流定制)。

对开发者而言,Neovim 是绝对首选.异步架构、Lua 生态、原生 LSP/Treesitter 支持,体验远超 Vim.