5656 字
28 分钟
理解 Neovim / LazyVim:它不是更难用的编辑器,而是一种高效编辑思想

很多人第一次接触 Neovim 或 LazyVim,会觉得它非常反人类:为什么不能直接打字?为什么退出还要输入 :q?为什么方向键不用,非要用 hjkl?为什么一个编辑器还要分普通模式、插入模式、可视模式?

但如果只把 Neovim 当成“快捷键很多的编辑器”,就很难真正理解它。更好的方式是把它看成一种以键盘为中心、以文本操作为核心、以可组合命令为基础的编辑系统。

LazyVim 则是在 Neovim 之上,提前配置好插件、快捷键、LSP、文件搜索、代码补全、Git、诊断、格式化等功能,让 Neovim 更接近一个现代 IDE。


一、Neovim 到底是什么?#

Neovim 可以理解为 Vim 的现代化版本。它继承了 Vim 的核心编辑模式,同时加强了扩展能力、异步能力、插件生态、Lua 配置和内置 LSP 等现代开发特性。Neovim 官方把它定位为一个 “hyperextensible Vim-based text editor”,并强调它具有一等 API、Lua 插件能力、Tree-sitter 支持和内置 LSP 客户端等特性。

简单说:

Vim 是经典的高效文本编辑器;Neovim 是更现代、更适合扩展和开发环境集成的 Vim 系编辑器。

如果你只是写一点普通文本,VS Code、Notepad++、Sublime Text 当然都能完成。但 Neovim 的优势在于:

  • 全键盘操作;
  • 启动快;
  • 可高度定制;
  • 适合远程服务器;
  • 适合终端环境;
  • 适合长期形成肌肉记忆;
  • 插件生态强;
  • 可以被配置成接近 IDE 的开发环境。

Neovim 的学习曲线陡,但一旦理解它的编辑逻辑,就会发现它不是“难用”,而是“不是按照普通编辑器的方式设计的”。


二、LazyVim 到底是什么?#

LazyVim 不是另一个编辑器,而是一个 Neovim 配置发行版。

它基于 lazy.nvim 这个插件管理器,把常用插件、默认设置、快捷键、LSP、代码补全、文件搜索、Git、诊断、格式化等功能预先组织好。LazyVim 官方介绍中明确说,它是一个由 lazy.nvim 驱动的 Neovim setup,用来让用户更容易定制和扩展配置。

可以这样理解:

Neovim = 编辑器本体
lazy.nvim = 插件管理器
LazyVim = 基于 Neovim + lazy.nvim 的成套配置方案

如果你从零配置 Neovim,你需要自己选择插件、写 Lua 配置、配置 LSP、配置补全、配置文件树、配置主题、配置快捷键。这个过程很自由,但也很费时间。

LazyVim 的价值在于:

它帮你把一套现代 Neovim 开发环境提前搭好了,你可以先用起来,再逐步理解和修改。

LazyVim 官方也强调,它可以把 Neovim 转换成完整 IDE,提供合理默认配置,并附带大量预配置插件。


三、Neovim 和 LazyVim 的关系#

很多新手会混淆这几个概念:

名称含义
Vim经典文本编辑器
NeovimVim 的现代化分支
lazy.nvimNeovim 插件管理器
LazyVim基于 Neovim 和 lazy.nvim 的完整配置方案
插件给 Neovim 增加功能的扩展
LSP语言服务器协议,用来提供跳转、补全、诊断、重命名等代码能力

你可以把它们类比成 Linux 世界里的关系:

Linux 内核 → Neovim 本体
Linux 发行版 → LazyVim 配置发行版
包管理器 apt → lazy.nvim 插件管理器
软件包 → Neovim 插件

所以,学习 LazyVim 的时候,不能只学 LazyVim 的快捷键,也要理解 Neovim / Vim 的基础编辑逻辑。因为 LazyVim 只是站在 Neovim 之上,底层仍然是 Vim 的编辑模型。


四、Neovim 最重要的思想:模式编辑#

普通编辑器通常只有一种状态:你按键,就是输入文字。

但 Neovim 不是这样。Neovim 是模式编辑器。

最核心的几个模式是:

模式含义常见用途
Normal mode普通模式移动、删除、复制、粘贴、跳转、执行命令
Insert mode插入模式正常输入文字
Visual mode可视模式选择文本
Command-line mode命令行模式保存、退出、搜索替换、执行命令
Terminal mode终端模式在 Neovim 内部使用终端

Neovim 官方文档中也说明,从普通模式进入插入模式可以使用 i、a、o、O 等命令;从可视模式返回普通模式可以按 <Esc>;命令行模式则通过输入命令并回车执行。

这就是 Neovim 最反直觉、但也是最核心的地方:

在 Neovim 里,大部分时间你不应该处于输入文字状态,而应该处于普通模式。

普通模式不是“不能编辑”,而是“用命令编辑”。


五、为什么普通模式这么重要?#

在普通编辑器里,你想删除一行,可能会:

  1. 鼠标选中;
  2. 按删除;
  3. 或者用 Shift + 方向键选择;
  4. 再按 Backspace。

在 Neovim 里,你可以直接:

dd

意思是删除当前行。

删除一个单词:

dw

删除到行尾:

d$

复制一行:

yy

粘贴:

p

这就是 Vim 系编辑器的关键:

编辑不是靠鼠标选中,而是靠“命令 + 移动范围”。

例如:

d w

可以理解为:

delete + word
删除 + 一个单词
c i w

可以理解为:

change + inner + word
修改 + 内部 + 单词
y i "

可以理解为:

yank + inner + quotes
复制 + 引号内部内容

这不是死记硬背,而是一种语法。


六、Neovim 的基本模式切换#

1. 从普通模式进入插入模式#

按键作用
i在光标前插入
a在光标后插入
I在行首插入
A在行尾插入
o在下一行新建一行并插入
O在上一行新建一行并插入

最常用的是:

i

进入插入模式。

Esc

回到普通模式。

新手最重要的习惯是:

打完字后,经常按 Esc 回到普通模式。


2. 进入可视模式#

按键作用
v按字符选择
V按行选择
Ctrl-v块选择

Neovim 官方文档说明,可视模式通常由三步组成:用 v、V 或 CTRL-V 标记选择起点,移动到选择终点,然后输入操作命令。

例如:

v

开始选择一段字符。

V

选择整行。

Ctrl-v

进入块选择,适合编辑多行同一列内容。


3. 进入命令行模式#

在普通模式下输入:

:

即可进入命令行模式。

常见命令:

:w

保存。

:q

退出。

:wq

保存并退出。

:q!

强制退出,不保存。

:e filename

打开文件。

:help

查看帮助。


七、Neovim 基础移动方法#

很多新手不适应 hjkl,但这是 Vim 编辑模型的基础。

按键方向
h左
j下
k上
l右

不过真实使用中,不应该只靠 hjkl 一个字符一个字符移动,而应该使用更高效的跳转。

单词级移动#

按键作用
w移动到下一个单词开头
b移动到上一个单词开头
e移动到当前或下一个单词结尾

行内移动#

按键作用
0到行首
^到本行第一个非空字符
$到行尾

文件级移动#

按键作用
gg到文件开头
G到文件结尾
数字G跳到指定行
Ctrl-d向下半页
Ctrl-u向上半页
Ctrl-f向下整页
Ctrl-b向上整页

例如:

20G

跳到第 20 行。

gg

跳到文件开头。

G

跳到文件结尾。


八、Neovim 的删除、复制、粘贴、撤销#

删除#

按键作用
x删除当前字符
dd删除当前行
dw删除一个单词
d$删除到行尾
diw删除当前单词内部
di"删除双引号内部内容
di(删除小括号内部内容

修改#

按键作用
cw修改一个单词
cc修改整行
ciw修改当前单词
ci"修改双引号内部内容
ci(修改小括号内部内容

例如:

ciw

意思是修改当前单词。它会删除当前单词并进入插入模式。

这类操作非常重要,因为它体现了 Vim 的编辑语法:

操作 + 范围

复制和粘贴#

按键作用
yy复制当前行
yw复制一个单词
yiw复制当前单词
p粘贴到光标后
P粘贴到光标前

Vim 里复制通常叫 yank,所以复制命令是 y。


撤销和重做#

按键作用
u撤销
Ctrl-r重做

九、搜索与替换#

搜索#

按键作用
/关键词向下搜索
?关键词向上搜索
n下一个搜索结果
N上一个搜索结果

例如:

/error

搜索 error。

替换#

替换当前行第一个匹配:

:s/old/new/

替换当前行所有匹配:

:s/old/new/g

替换全文所有匹配:

:%s/old/new/g

替换全文并逐个确认:

:%s/old/new/gc

十、理解 Buffer、Window、Tab#

这是很多新手最容易混乱的地方。

1. Buffer#

Buffer 是 Neovim 中“已经打开的文件内容”。

你可以打开多个文件,它们都在 buffer 列表里。

2. Window#

Window 是屏幕上的一个显示区域。

一个窗口可以显示某个 buffer。

你可以把屏幕分成左右、上下多个 window。

3. Tab#

Tab 是窗口布局的集合。

它不是简单等同于浏览器标签页,而更像是一套窗口布局。

可以这样理解:

Buffer = 文件内容
Window = 显示区域
Tab = 一组窗口布局

例如,你打开了三个文件,它们都是 buffer。你把屏幕左右分屏,这是两个 window。你又开了一个新的 tab,它可以有另一套窗口布局。


十一、LazyVim 的核心使用方式:按 <leader> 找功能#

LazyVim 默认使用 which-key.nvim 来帮助记忆快捷键。官方文档说明,只要按下某个键,比如 <space>,就会弹出可能的后续快捷键提示;LazyVim 默认 <leader> 是空格键,默认 <localleader> 是反斜杠 \\。

所以,在 LazyVim 里,你要牢牢记住:

<leader> = 空格键

也就是说:

<leader>ff

实际按键是:

空格 f f
<leader>e

实际按键是:

空格 e

LazyVim 的学习诀窍不是一开始背完所有快捷键,而是:

先按空格,看看 which-key 弹出什么提示,再逐渐形成记忆。


十二、LazyVim 常用按键总表#

下面这些是 LazyVim 中比较常用的默认操作。LazyVim 的快捷键会受插件、Extras 和个人配置影响,实际环境中以 which-key 弹窗和官方 Keymaps 页面为准。官方 Keymaps 页面列出了默认 <leader>、窗口、buffer、LSP、搜索、Git、诊断等按键。

1. 文件和搜索#

按键作用
<leader><space>查找项目文件
<leader>ff查找项目文件
<leader>fF在当前工作目录查找文件
<leader>fg查找 Git 文件
<leader>fr最近打开的文件
<leader>fc查找 Neovim 配置文件
<leader>/在项目中全文搜索
<leader>sgGrep 项目
<leader>sGGrep 当前目录
<leader>sw搜索当前单词或选中文本
<leader>sh搜索帮助文档
<leader>sk搜索快捷键

实际按法示例:

空格 空格

打开文件查找。

空格 /

全文搜索。

空格 s k

搜索快捷键。

LazyVim 官方 Keymaps 中列出了 <leader><space> 查找文件、<leader>/ grep、<leader>ff 查找文件、<leader>fr 最近文件、<leader>sk 搜索 keymaps 等操作。


2. 文件树 / Explorer#

按键作用
<leader>e打开 / 关闭项目文件浏览器
<leader>E打开当前目录文件浏览器
<leader>fe项目根目录 Explorer
<leader>fE当前目录 Explorer

最常用的是:

空格 e

这基本相当于 VS Code 左侧文件树。

LazyVim 默认 keymaps 中,<leader>e 和 <leader>E 分别对应 root dir 和 cwd 的 Explorer。


3. Buffer 操作#

按键作用
Shift-h上一个 buffer
Shift-l下一个 buffer
[b上一个 buffer
]b下一个 buffer
<leader>,查看 buffers
<leader>bb切换到另一个 buffer
<leader>bd关闭当前 buffer
<leader>bo关闭其他 buffer
<leader>bD关闭 buffer 和窗口

实际按法:

Shift + h

切到上一个文件。

Shift + l

切到下一个文件。

空格 b d

关闭当前 buffer。

LazyVim 官方 Keymaps 中列出了 Shift-h、Shift-l、[b、]b、<leader>bb、<leader>bd 等 buffer 操作。


4. 窗口和分屏#

按键作用
<C-h>移动到左侧窗口
<C-j>移动到下方窗口
<C-k>移动到上方窗口
<C-l>移动到右侧窗口
<leader>-水平分屏
<leader>|垂直分屏
<leader>wd删除窗口
<leader>wm窗口最大化 / 还原
<C-Up>增加窗口高度
<C-Down>减少窗口高度
<C-Left>减少窗口宽度
<C-Right>增加窗口宽度

其中 <C-h> 表示:

Ctrl + h

LazyVim 把窗口移动做得比原生 Vim 更方便。原生 Vim 通常使用 Ctrl-w h/j/k/l,而 LazyVim 可以直接用 Ctrl-h/j/k/l 在窗口之间移动。官方 Keymaps 中列出了 <C-h>、<C-j>、<C-k>、<C-l> 以及 <leader>-、<leader>| 等窗口操作。


5. 保存和退出#

按键作用
<C-s>保存文件
<leader>qq退出全部
:w保存
:q退出
:wq保存并退出
:q!不保存强制退出

实际按法:

Ctrl + s

保存。

空格 q q

退出全部。

LazyVim 默认 keymaps 中包含 <C-s> 保存文件和 <leader>qq 退出全部。


6. 代码跳转与 LSP#

LSP 是 LazyVim 像 IDE 的关键。

按键作用
gd跳转到定义
gr查看引用
gI跳转到实现
gy跳转到类型定义
gD跳转到声明
K查看悬浮文档
gK查看函数签名
<leader>caCode Action
<leader>cr重命名
<leader>cf格式化
<leader>clLSP 信息
<leader>co整理 imports
<leader>ss当前文件符号
<leader>sS工作区符号

实际按法:

g d

跳转到定义。

空格 c a

打开代码操作。

空格 c r

重命名变量、函数或符号。

LazyVim 官方 LSP keymaps 中列出了 gd、gr、gI、gy、K、<leader>ca、<leader>cr、<leader>cf 等操作。


7. 诊断和错误跳转#

按键作用
<leader>cd当前行诊断
]d下一个诊断
[d上一个诊断
]e下一个错误
[e上一个错误
]w下一个警告
[w上一个警告
<leader>xx打开诊断列表
<leader>xX打开当前 buffer 诊断
<leader>xqQuickfix 列表
<leader>xlLocation List

实际按法:

] d

跳到下一个诊断。

空格 x x

打开诊断列表。

LazyVim Keymaps 中列出了诊断跳转、错误跳转、警告跳转,以及 Trouble 诊断列表相关快捷键。


8. Git 操作#

按键作用
<leader>gsGit 状态
<leader>gdGit diff
<leader>gD与 origin 比较 diff
<leader>gb当前行 blame
<leader>glGit log
<leader>gL当前工作目录 Git log
<leader>gf当前文件历史
<leader>gB在浏览器打开 Git 地址
<leader>gY复制 Git 地址

实际按法:

空格 g s

查看 Git 状态。

空格 g b

查看当前行 blame。

LazyVim 官方 Keymaps 中列出了 Git log、blame、diff、Git status、stash 等相关操作。


9. 终端操作#

按键作用
<leader>ft在项目根目录打开终端
<leader>fT在当前目录打开终端
<C-/>打开终端

实际按法:

空格 f t

打开终端。

LazyVim 默认 keymaps 中包含 <leader>ft、<leader>fT 和 <C-/> 终端操作。


10. UI 开关#

按键作用
<leader>uw开关自动换行
<leader>ul开关行号
<leader>uL开关相对行号
<leader>ud开关诊断
<leader>uf全局开关自动格式化
<leader>uF当前 buffer 开关自动格式化
<leader>us开关拼写检查
<leader>uC切换颜色主题
<leader>uzZen mode
<leader>uZZoom mode

实际按法:

空格 u w

开关自动换行。

空格 u L

开关相对行号。

LazyVim 默认 keymaps 中列出了大量 <leader>u 开头的 UI toggle 操作,包括 wrap、line numbers、relative number、diagnostics、format、colorscheme、Zen mode 等。


十三、LazyVim 的按键记忆规律#

LazyVim 的快捷键看起来很多,但其实有规律。

1. <leader>f 多与文件有关#

f = file / find

例如:

<leader>ff
<leader>fr
<leader>fc
<leader>fe

2. <leader>s 多与搜索有关#

s = search

例如:

<leader>sg
<leader>sk
<leader>sh
<leader>sd

3. <leader>g 多与 Git 有关#

g = git

例如:

<leader>gs
<leader>gd
<leader>gb
<leader>gl

4. <leader>c 多与代码有关#

c = code

例如:

<leader>ca
<leader>cr
<leader>cf
<leader>cd

5. <leader>b 多与 buffer 有关#

b = buffer

例如:

<leader>bd
<leader>bb
<leader>bo

6. <leader>u 多与 UI 开关有关#

u = UI / toggle

例如:

<leader>uw
<leader>ul
<leader>uL
<leader>ud

记住这些前缀,比硬背每个快捷键更重要。


十四、Neovim 的高效编辑语法#

如果说 LazyVim 的快捷键是“功能入口”,那么 Vim 的原生编辑语法才是“效率核心”。

最重要的是这套结构:

操作 + 范围

常见操作#

操作含义
d删除
c修改
y复制
v选择
>增加缩进
<减少缩进
=自动格式化缩进

常见范围#

范围含义
w一个单词
$到行尾
0到行首
iw当前单词内部
aw当前单词及周围空格
i"双引号内部
a"包括双引号
i(小括号内部
a(包括小括号
i{大括号内部
a{包括大括号

于是你可以组合出很多命令:

命令含义
dw删除一个单词
cw修改一个单词
yw复制一个单词
d$删除到行尾
c$修改到行尾
diw删除当前单词
ciw修改当前单词
yiw复制当前单词
ci"修改双引号内部
di(删除小括号内部
ya{复制整个大括号块,包括括号

这就是 Vim 真正强大的地方。

你不是在记一堆孤立快捷键,而是在学习一种文本编辑语言。


十五、一个实际编辑场景#

假设有这样一行代码:

const username = "old_name";

你想把 "old_name" 改成 "new_name"。

普通编辑器里,你可能会鼠标选中 old_name,然后输入新内容。

在 Neovim 里,如果光标在引号内部,直接:

ci"

然后输入:

new_name

最后按:

Esc

这个过程的含义是:

change inner quotes
修改 引号内部内容

再比如你想删除整个函数体内部内容:

di{

意思是:

delete inner braces
删除 大括号内部内容

这就是为什么熟悉 Vim 后,很多编辑动作会非常快。


十六、LazyVim 适合谁?#

LazyVim 比较适合以下几类人:

  • 想用 Neovim,但不想从零配置;
  • 想在终端里写代码;
  • 经常远程连接 Linux 服务器;
  • 想要比原生 Vim 更现代的开发体验;
  • 想学习 Vim 编辑模型;
  • 想逐步替代 VS Code 的部分开发场景;
  • 喜欢可定制工具。

但 LazyVim 不一定适合所有人。

如果你只是偶尔改几个文件,不愿意学习模式编辑,那么 nano、VS Code 或普通 GUI 编辑器可能更轻松。

如果你喜欢完全掌控每一行配置,也可以从裸 Neovim 开始,而不是用 LazyVim。

LazyVim 的定位更像是:

给想用 Neovim 做现代开发的人,一个已经配置好的起点。


十七、学习 Neovim / LazyVim 的合理顺序#

不建议一上来就研究插件配置。更好的顺序是:

第一阶段:先学 Vim 基础#

重点掌握:

i
Esc
hjkl
w
b
e
0
$
gg
G
dd
yy
p
u
Ctrl-r
/
n
N
:w
:q
:wq
:q!

这个阶段的目标是:

能正常打开文件、编辑、保存、退出。


第二阶段:理解操作 + 范围#

重点掌握:

dw
cw
yw
diw
ciw
yiw
ci"
di(
ci{

这个阶段的目标是:

不再靠方向键和鼠标一点点选择文本,而是用命令表达编辑意图。


第三阶段:熟悉 LazyVim 的 <leader> 快捷键#

重点掌握:

<leader><space>
<leader>/
<leader>e
<leader>,
<leader>ff
<leader>fr
<leader>bd
<leader>cf
<leader>ca
<leader>cr
<leader>gs

这个阶段的目标是:

能用 LazyVim 完成文件搜索、全文搜索、代码跳转、格式化、Git 操作等日常开发任务。


第四阶段:学习 LSP 和诊断#

重点掌握:

gd
gr
K
<leader>ca
<leader>cr
<leader>cf
]d
[d
<leader>xx

这个阶段的目标是:

像使用 IDE 一样使用 Neovim。


第五阶段:再去改配置#

最后再学习:

~/.config/nvim/lua/config/
~/.config/nvim/lua/plugins/

也就是 LazyVim 的配置目录。

不要一开始就陷入配置。新手最容易把时间花在主题、插件、快捷键重映射上,最后反而没有真正掌握编辑本身。


十八、常见误区#

误区一:一开始就想把 Neovim 配成 VS Code#

Neovim 可以很像 IDE,但它不是 VS Code。

你应该先接受它的核心编辑模型,再逐步增加 IDE 功能。

如果一开始就追求“完全复刻 VS Code”,反而会很痛苦。


误区二:只学 LazyVim 快捷键,不学 Vim 基础#

LazyVim 的文件搜索、LSP、Git 很好用,但底层编辑效率仍然来自 Vim。

如果你不会:

ciw
di"
gg
G
/
n
dd
yy
p

那你只是把 Neovim 当成了一个带插件的普通编辑器。


误区三:过度折腾配置#

Neovim 的配置很容易让人上瘾。

今天换主题,明天换状态栏,后天换补全插件,大后天重构快捷键。

但真正提高效率的不是配置,而是肌肉记忆。

建议先稳定使用一套配置,等你明确知道“不顺手在哪里”之后,再去改配置。


误区四:害怕 Esc#

Neovim 的核心节奏是:

插入模式输入文字 → Esc 回普通模式 → 移动和编辑 → 再进入插入模式

所以,不要一直停留在插入模式。

普通模式才是 Neovim 的主场。


十九、最小可用快捷键清单#

你可以先只记这一组。

Neovim 基础#

i 进入插入模式
Esc 回普通模式
:w 保存
:q 退出
:wq 保存并退出
:q! 强制退出
h j k l 左下上右
w b e 单词移动
0 $ 行首行尾
gg G 文件开头和结尾
dd 删除行
yy 复制行
p 粘贴
u 撤销
Ctrl-r 重做
/ 搜索
n N 下一个 / 上一个搜索结果

Vim 高效编辑#

ciw 修改当前单词
diw 删除当前单词
yiw 复制当前单词
ci" 修改引号内部
di( 删除小括号内部
ci{ 修改大括号内部

LazyVim 常用#

<leader><space> 查找文件
<leader>/ 全文搜索
<leader>e 文件树
<leader>, Buffer 列表
<S-h> 上一个 buffer
<S-l> 下一个 buffer
<leader>bd 关闭 buffer
<C-h/j/k/l> 在窗口间移动
<leader>- 水平分屏
<leader>| 垂直分屏
gd 跳转到定义
gr 查看引用
K 查看文档
<leader>ca Code Action
<leader>cr 重命名
<leader>cf 格式化
]d 下一个诊断
[d 上一个诊断
<leader>gs Git 状态

二十、一句话理解 Neovim / LazyVim#

Neovim 的核心不是“快捷键很多”,而是:

用模式区分输入和操作,用命令表达编辑意图,用组合语法高效处理文本。

LazyVim 的核心不是“插件很多”,而是:

在 Neovim 之上预先搭好现代开发环境,让你可以更快进入文件搜索、代码跳转、补全、诊断、格式化和 Git 工作流。

如果你只是想“能用”,先记住:

i 输入,Esc 退出输入,:w 保存,:q 退出

如果你想“高效”,就掌握:

操作 + 范围

例如:

ciw
di"
yi(

如果你想“把 LazyVim 当 IDE 用”,就熟悉:

空格键 leader 菜单

例如:

<leader><space>
<leader>/
<leader>e
<leader>ca
<leader>cr
<leader>cf

Neovim 一开始看起来很怪,但它的逻辑非常统一。只要你抓住:

模式、移动、操作、范围、buffer、window、leader

这几条主线,就能慢慢把 Neovim / LazyVim 从一堆神秘快捷键,理解成一个清晰、高效、可持续使用的编辑系统。

理解 Neovim / LazyVim:它不是更难用的编辑器,而是一种高效编辑思想
https://karx.cn/posts/understanding-neovim-lazyvim/
作者
karx
发布于
2026-06-01
许可协议
CC BY-NC-SA 4.0