持续维护最后验证:2026-09-01T09:00:34Z
配置指南
  1. Neovim 配置
  2. Yazi 配置
  3. Neovim 快捷键学习手册

Neovim 快捷键学习手册

本手册以当前 ~/.config/nvim 的实际配置为准,适合边用边查。
它覆盖两类内容:本配置明确设置的全部快捷键,以及日常编辑必须掌握的 Neovim 原生操作。
Neovim 原生命令非常多,本文优先说明日常编辑、文件管理、代码阅读和开发流程中真正会用到的部分。

一、先记住这 12 个按键

刚开始不需要背完整张表。先把下面这些用熟,已经足够完成大部分日常工作。

按键 什么时候用 作用
<Space> e 要找文件、浏览目录 打开文件管理器
Ctrl+i/j/k/l 文件管理器、代码、分屏之间移动 上 / 左 / 下 / 右切换窗口
Shift+Left / Shift+Right 打开了多个文件 上一个 / 下一个文件
1 至 9 想直接到顶部某个文件 切到第 1 至第 9 个文件
<Space> b b 文件很多或忘了文件位置 打开已打开文件的列表
<Space> f f 要打开项目内文件 按文件名查找并打开
<Space> f g 要在项目中找文字 全项目文本搜索
<Space> w 编辑后 保存当前文件
i / jj 开始 / 结束输入文字 进入插入模式 / 回到普通模式
u / Ctrl+r 操作错了 撤销 / 重做
K 看不懂当前函数、变量或类型 显示代码文档
<Space> c a 代码有提示或可自动修复 打开代码动作菜单

二、记号与模式

按键记号

写法 含义
<Space> 或 <leader> 空格键。本配置的自定义功能入口。
<C-x> 按住 Ctrl 再按 x,例如 <C-j> 是 Ctrl+j。
<S-x> 按住 Shift 再按 x。
<C-S-x> 同时按住 Ctrl、Shift 再按 x。
<CR> 回车键。
<Esc> Escape 键。

在普通模式按 <Space> 后稍等片刻,which-key 会显示后续可用的中文快捷键。它只显示本配置的中文说明,避免大量英文内置提示干扰学习。

四个最常用模式

模式 如何进入 如何退出 用途
普通模式 <Esc> 或刚打开文件时 无需退出 移动、删除、复制、保存、切换窗口等。
插入模式 i、a、o 等 jj 或 <Esc> 输入文字。
可视模式 v、V、Ctrl+v <Esc> 选中字符、行或矩形区域后再操作。
命令行模式 : <Esc> 输入命令,例如 :w、:q、:Lazy。

建议:需要输入文字时先按 i;输入结束马上按 jj 回普通模式。绝大多数快捷键都在普通模式使用。

保存、退出与终端

按键 模式 作用
<Space> w 普通 保存当前文件。
<Space> q 普通 退出当前窗口;有未保存修改时 Neovim 会提醒。
<Space> Q 普通 退出全部 Neovim 窗口。
<Esc> 普通 清除当前搜索结果的高亮。
<Space> t t 普通 打开或切换终端(在当前路径,即 Neovim 当前工作目录)。
Ctrl+\ 普通 打开或切换终端(与 <Space> t t 相同)。
<Esc> 终端 退出终端输入模式;再按 <Space> t t 或 Ctrl+\ 可关闭终端。

三、日常编辑与原生操作

光标移动和阅读文件

本配置不要求使用 h/j/k/l。普通模式可以直接使用方向键移动光标。

按键 作用 使用提示
Left/Down/Up/Right 左 / 下 / 上 / 右移动光标 推荐的基础移动方式。
Home / End 行首 / 行尾 适合编辑当前行。
PageUp / PageDown 向上 / 向下翻页 快速阅读。
Ctrl+u 向上翻半页并居中 已启用平滑滚动。
Ctrl+d 向下翻半页 已启用平滑滚动。
gg / G 文件开头 / 文件结尾 浏览长文件。
gv 重新选择上一次的可视选区 选区操作后恢复刚才的选择。
gq 加移动 格式化一段文字 例如在可视选择后按 gq。
w / b / e 下个词首 / 上个词首 / 当前或下个词尾 熟悉后比逐字符移动快。
0 / ^ / $ 行首 / 第一个非空字符 / 行尾 适合代码行。
Ctrl+o 跳转历史的上一个位置 从定义跳转回来时常用。

输入、删除、复制与撤销

按键 模式 作用
i / a 普通 在光标前 / 后开始输入。
I / A 普通 在行首第一个字符前 / 行尾开始输入。
o / O 普通 在下方 / 上方新建一行并开始输入。
jj / <Esc> 插入 回到普通模式。
x / X 普通 删除光标处字符 / 前一个字符。
dd 普通 删除整行。
D 普通 从光标删到行尾。
yy 普通 复制整行。
y 后接移动 普通 复制一个范围,例如 yw 复制一个词。
p / P 普通 在光标后 / 前粘贴;由 Yanky 管理粘贴历史。
gp / gP 普通 粘贴后保留光标位置。
Ctrl+n / Ctrl+p 普通 循环下一个 / 上一个粘贴历史内容。
u / Ctrl+r 普通 撤销 / 重做。
. 普通 重复上一次修改。

选择与批量编辑

按键 作用
v 按字符进入可视选择。
V 按整行进入可视选择。
Ctrl+v 矩形选择,适合多行同时插入或删除。
> / < 在可视模式中增加 / 减少缩进,并保持选中。
p 在可视模式中粘贴并替换选区;被替换内容进入 Yanky 历史,可用 Ctrl+p 找回。
d / y / c 删除 / 复制 / 修改当前选区。

注释、环绕与快速跳转

这些是注释(Neovim 内置)、环绕(mini.surround)与快速跳转(flash.nvim)的操作。

按键 作用 例子
gcc 注释或取消注释当前行 在代码行上直接按。
gc 加移动 注释一个范围 gc} 注释到当前段落结束。
gsa 加移动再加符号 为范围添加环绕符号 gsaiw" 为当前词加双引号;可视模式下选中后 gsa"。
gsd 加符号 删除环绕符号 gsd" 删除一对双引号。
gsr 加旧符号和新符号 替换环绕符号 gsr"' 把双引号改为单引号。
gsh 高亮显示最近的环绕符号 不确定配对位置时按一下。
s Flash 快速跳转 输入目标字符,再按屏幕提示的字母跳转。

四、文件、目录与已打开文件

三种“文件页面”的区别

名称 你会看到什么 本配置的切换方式
文件管理器 左侧或独立的目录树 <Space> e 打开;用 Ctrl+i/j/k/l 切换焦点。
缓冲区 顶部一排已打开文件名 Shift+Left/Right、1 至 9、<Space> b b。
Vim 标签页 一个标签页中可以包含多个分屏 Shift+Up/Down。通常较少使用。

文件管理器

按键或命令 作用 使用方式
<Space> e Snacks 文件管理器 打开或关闭项目目录浏览器。
Ctrl+i 切到上方窗口 文件管理器在上方时进入它。
Ctrl+j 切到左侧窗口 文件管理器在左侧时回到它。
Ctrl+k 切到下方窗口 文件管理器在下方时进入它。
Ctrl+l 切到右侧窗口 文件管理器在左侧时回到正文。
- Oil 文件管理器 以可编辑缓冲区形式浏览当前文件所在目录。

在 Snacks 文件管理器或文件查找列表中,通常用方向键选中项目、按回车打开、按 <Esc> 关闭当前面板。打开文件后焦点可能留在文件管理器;按 Ctrl+l 即可回到右侧正文窗口。

缓冲区:顶部文件栏

顶部显示的一排文件名是缓冲区,不是 Vim 标签页。它们代表当前 Neovim 已打开的文件。

按键 作用 适用场景
Shift+Left / Shift+Right 上一个 / 下一个缓冲区 在两个或少量文件间来回切换。
1 至 9 切换顶部第 1 至第 9 个缓冲区 已知目标文件在顶部的位置。
<Space> b b 打开缓冲区列表 文件很多或记不住位置时推荐。
<Space> b d 智能关闭当前缓冲区 有修改会先保存,再关闭。
<Space> b o 关闭其他缓冲区 只保留当前文件。

注意:普通模式的数字 1 至 9 已被专门用于选择顶部文件栏。因此它们不能再作为重复次数前缀使用。例如需要执行“向下移动 5 行”时,可临时使用命令行 :normal 5j,或直接使用 PageDown / 搜索。

Vim 标签页

Vim 标签页和顶部的缓冲区不同。一个标签页可包含多个分屏窗口。

按键或命令 作用
Shift+Up / Shift+Down 上一个 / 下一个 Vim 标签页。
<Space> T n 新建标签页。
<Space> T x 关闭当前标签页。
<Space> T o 只保留当前标签页(关闭其它标签页)。
:tabnew 新建标签页。
:tabclose 关闭当前标签页。
:tabs 列出所有标签页。

五、分屏窗口与尺寸调整

创建、关闭与切换窗口

按键 作用 说明
<Space> s v 左右分屏 当前文件会出现在两个窗口中。
<Space> s h 上下分屏 当前文件会出现在两个窗口中。
Ctrl+i 切到上方窗口 IJKL 方向布局中的上。
Ctrl+j 切到左侧窗口 IJKL 方向布局中的左。
Ctrl+k 切到下方窗口 IJKL 方向布局中的下。
Ctrl+l 切到右侧窗口 IJKL 方向布局中的右。
<Space> s x 关闭当前窗口 不会自动关闭缓冲区。
<Space> s o 只保留当前窗口 关闭其余分屏。
<Space> s e 均衡所有分屏尺寸 适合调整后恢复整齐布局。
<Space> s m 最大化当前窗口 再按 <Space> s e 可恢复均衡大小。

调整当前窗口大小

先用 Ctrl+i/j/k/l 进入需要调整的窗口,再按下面的组合键。每次宽度变化 5 列,高度变化 3 行。

按键 作用
Ctrl+PageUp 缩小当前窗口宽度。
Ctrl+PageDown 扩大当前窗口宽度。
Ctrl+Shift+PageUp 缩小当前窗口高度。
Ctrl+Shift+PageDown 扩大当前窗口高度。

六、查找、搜索与跳转

项目级查找

按键 作用 适用场景
<Space> f f 按文件名查找文件 打开项目内文件。
<Space> f r 最近文件 回到刚编辑过的文件。
<Space> f g 全局文本搜索 在整个项目里查函数名、错误文字。
<Space> f w 搜索光标下单词或可视选区 快速找当前变量、函数名。
<Space> f s 当前文件符号 查找函数、类、方法。
<Space> f h Neovim 帮助 查官方帮助主题。
<Space> f k 已注册快捷键 忘记按键时查找。
<Space> f R 项目级查找替换 批量修改前先确认范围。

搜索面板内输入文字过滤结果,使用方向键选择,按回车确认,按 <Esc> 取消。

当前文件内搜索

按键 作用
/文字 后回车 向下搜索。
?文字 后回车 向上搜索。
n / N 下一个 / 上一个搜索结果。
* / # 向下 / 向上搜索光标所在完整单词。
<Esc> 清除搜索高亮。
s Flash 跳转;适合在当前屏幕内快速定位字符。

七、代码导航、补全与诊断

下面的语言服务快捷键只在当前文件已启动 LSP 时有效,例如 Lua、Python、C/C++、TypeScript、Rust 等。

代码导航与修改

按键 作用 适用场景
K 悬浮文档 查看函数参数、变量类型、说明。
gd 跳转定义 进入函数、变量、类型的定义。
gD 跳转声明(Snacks 预览) 在预览窗口中查看声明,Esc 关闭。
gr 查找引用 找出项目中全部使用位置。
gi 跳转实现 进入接口或抽象类的实现。
gy 跳转类型定义(Snacks 预览) 在预览窗口中查看类型定义,Esc 关闭。
Ctrl+o 返回上一个跳转位置 从定义返回调用处。
<Space> c a 代码动作 修复、导入、重构等。
<Space> c r 重命名符号 输入新名称后确认,LSP 会更新引用。
<Space> c f 格式化当前文件 保存时也会自动格式化。
<Space> c s 代码符号大纲 打开当前文件的函数、类、方法列表。

诊断与问题列表

按键 作用
[d / ]d 上一条 / 下一条诊断。
<Space> x d 显示光标位置的诊断说明。
<Space> x x 打开整个工作区诊断列表。
<Space> x X 只打开当前文件诊断列表。

插入模式补全

按键 作用
Ctrl+j / Ctrl+k 补全列表的下一个 / 上一个候选项。
Ctrl+b / Ctrl+f 向上 / 向下滚动候选项文档。
Ctrl+/ 主动打开补全菜单。
<CR> 确认当前候选项。
<Esc> 或 jj 取消输入并回到普通模式。

Ctrl+j/k 在插入模式只控制补全;在普通模式才用于切换分屏窗口,因此两者不冲突。

八、Git、结构化代码与折叠

Git

按键 作用 说明
[h / ]h 上一处 / 下一处 Git 修改块 仅 Git 仓库内文件有效。
<Space> g g 打开 LazyGit 进行暂存、提交、分支等操作。
<Space> g b 浏览 Git 链接 可用于打开或复制远端链接。
<Space> g d 打开差异视图 查看当前工作区差异。
<Space> g h 打开文件历史 查看当前文件历史。

函数、类与参数文本对象

这些功能依赖 Tree-sitter,适用于解析器已安装的代码文件。可与 d、y、c、v 组合。

对象 含义 示例
af / if 整个函数 / 函数内部 daf 删除整个函数;yif 复制函数体。
ac / ic 整个类 / 类内部 vac 选中整个类。
aa / ia 整个参数 / 参数内部 cia 修改当前参数内容。
]f / [f 下一个 / 上一个函数开头 快速在函数之间移动。
]c / [c 下一个 / 上一个类开头 快速在类之间移动。

折叠

按键 作用
zR / zM 展开全部 / 关闭全部折叠。
zo / zc 展开 / 关闭当前折叠。
za 切换当前折叠。

九、运行、测试、调试、构建与 Rust

运行当前文件

按键 作用
<Space> r f 运行当前文件,按文件类型自动选择:Python(python3)、C/C++(编译到 /tmp 后运行)、Shell(bash)、Lua(lua)、JS/TS(node)、Go(go run)、Rust(cargo run)。

运行由 code_runner 插件在浮动终端中进行:输出始终可见、支持 input() 等交互式输入,运行结束后按 Esc 或 q 关闭窗口。

会话管理(persistence.nvim)

退出时自动保存当前目录的窗口与缓冲区布局。

按键 作用
<Space> p s 恢复当前目录的会话。
<Space> p l 恢复上一次保存的会话(不限目录)。
<Space> p d 本次退出时不保存会话。

测试

按键 作用
<Space> t r 运行最近一次测试。
<Space> t f 运行当前文件测试。
<Space> t d 用调试器运行最近一次测试。
<Space> t s 打开或关闭测试总览。
<Space> t o 打开测试输出。

调试

按键 作用
<Space> d c 启动或继续调试。
<Space> d b 在当前行添加或删除断点。
<Space> d B 添加条件断点。
<Space> d o 单步跳过。
<Space> d i 单步进入。
<Space> d O 单步退出当前函数。
<Space> d r 打开调试交互终端。
<Space> d u 显示或隐藏调试界面。

Python 调试:在 Python 文件中按 <Space> d c,选择 Python: Launch file(首次使用前 Mason 会自动安装 debugpy)。

C/C++ 调试:在 C/C++ 文件中按 <Space> d c,选择 codelldb;CMake 项目可先按 <Space> m d 构建后调试。

C/C++ 构建

这些命令假定当前项目使用 CMake,并在项目根目录的 build/ 下构建。没有 CMake 的单个文件请用 <Space> r f。

按键 作用
<Space> m b 构建 C++ 项目。
<Space> m r 构建后运行检测到的可执行文件。
<Space> m d 构建后启动调试。

Rust

以下快捷键只在 Rust 文件中可用。

按键 作用
<Space> r r 运行可运行目标。
<Space> r t 选择并运行测试。
<Space> r d 选择可调试目标。
<Space> r e 解释当前错误。
<Space> r c 打开 Cargo.toml。

十、任务、开关与工具

任务

按键 作用
<Space> r f 运行当前文件(多语言)。
<Space> o r 选择并运行 Overseer 任务。
<Space> o l 打开或关闭任务列表。
<Space> o o 对当前任务执行快速操作。

编辑开关与界面工具

按键 作用
<Space> u s 开启或关闭拼写检查。
<Space> u w 开启或关闭自动换行。
<Space> u h 开启或关闭当前缓冲区的行内类型提示。
<Space> u u 打开或关闭撤销树。
<Space> n 查看通知历史。
<Space> l 打开 Lazy 插件管理器。
<Space> M 打开 Mason 语言服务和工具管理器。
Ctrl+\ 或 <Space> t t 打开或切换终端。
<Esc>(终端模式) 退出终端输入模式;随后按 Ctrl+\ 关闭终端。

其他可用命令

这些功能已安装但没有自定义单键映射,使用命令行模式 : 调用。

命令 作用
:CccPick 打开颜色选择器。
:MarkdownPreviewToggle(或 <Space> m p) 在浏览器中切换 Markdown 预览。
:UndotreeToggle 切换撤销树。
:Trouble 打开 Trouble 问题列表。
:AerialToggle 切换代码符号大纲。
:DiffviewOpen 打开 Git 差异视图。
:OverseerRun 运行任务。

十一、推荐学习顺序

  1. 先练习:i、jj、方向键、u、Ctrl+r、<Space>w。
  2. 然后练习文件流转:<Space>e、Ctrl+i/j/k/l、Shift+Left/Right、<Space>bb、<Space>ff。
  3. 再练习代码阅读:K、gd、Ctrl+o、gr、[d、]d。
  4. 开始写代码后使用:<Space>ca、<Space>cr、<Space>cf、补全的 Ctrl+j/k。
  5. 最后按需要学习 Git、测试、调试、Tree-sitter 文本对象和任务系统。

遇到不确定的功能时,先按 <Space> 看中文提示,或用 <Space>fk 搜索已注册快捷键。这个习惯比硬背整张表更有效。