持续维护最后验证:2026-08-31T09:48:43Z
系统:CachyOS编辑器:Neovim 0.12.x插件管理:lazy.nvim
配置指南
  1. Neovim 配置
  2. Yazi 配置
  3. Neovim 快捷键学习手册

Neovim 配置详解

基于 lazy.nvim 的模块化配置,适用于 Neovim >= 0.11(当前环境 0.12.x)。
配置根目录:~/.config/nvim

目录结构

~/.config/nvim/
├── init.lua                  # 入口:加载 options → keymaps → lazy
├── lazy-lock.json            # 插件版本锁
├── README.md                 # 安装说明
├── NVIM_CONFIG.md            # 本文档
├── /2026/09/01/neovim-kuai-jie-jian-xue-xi-shou-ce/                 # 完整中文快捷键学习手册
└── lua/
    ├── config/
    │   ├── options.lua       # 编辑器基础选项
    │   ├── keymaps.lua       # 全局键位 + LSP/gitsigns 共享函数
    │   └── lazy.lua          # lazy.nvim 初始化与全局配置
    └── plugins/              # 每个插件一个文件,由 lazy 自动导入

启动流程:init.lua 先加载编辑器选项,再注册全局键位,最后交给 lazy.nvim
按需懒加载所有插件。

编辑器基础设置(options.lua)

设置 值 说明
行号 number + relativenumber 当前行绝对行号,其余相对行号
缩进 tabstop/shiftwidth = 2,expandtab 2 空格缩进
搜索 smartcase + hlsearch + incsearch 智能大小写、实时预览、高亮
界面 cursorline、signcolumn、scrolloff=8 当前行高亮、符号列、滚动留白
窗口 splitright / splitbelow 新窗口右/下打开
文件 undofile、无 swap/backup 持久化撤销
剪贴板 clipboard=unnamedplus 与系统剪贴板互通
性能 updatetime=250、timeoutlen=300 快速响应 CursorHold 与快捷键
补全 pumheight=10、completeopt=menuone,noselect 补全菜单行为

插件清单

核心 / 管理

插件 作用 加载方式
folke/lazy.nvim 插件管理器,自动导入 lua/plugins/ 启动

主题与界面

插件 作用 加载方式
catppuccin/nvim 默认主题(mocha,透明背景),集成 blink.cmp/snacks/notify/mini 等 priority 1000
kanagawa.nvim / tokyonight.nvim 两个备选主题(:colorscheme 临时切换) 启动
nvim-lualine/lualine.nvim 状态栏(模式、分支、诊断、文件名) VimEnter
akinsho/bufferline.nvim 顶部 buffer 标签页,支持智能关闭、拖拽 BufReadPost
rcarriga/nvim-notify 通知美化 启动
folke/noice.nvim 命令行弹窗、补全菜单美化 VeryLazy
stevearc/dressing.nvim 统一 vim.ui 输入/选择弹窗 启动
nvim-tree/nvim-web-devicons 文件类型图标 依赖
MunifTanjim/nui.nvim UI 组件库 依赖
folke/snacks.nvim 全家桶:启动页、搜索器、文件管理器、lazygit、状态列、图片预览、大文件优化、内置终端等 启动

编辑增强

插件 作用 加载方式
nvim-treesitter/nvim-treesitter 语法高亮与解析器管理 启动
nvim-treesitter/nvim-treesitter-textobjects 基于语法树的选择/移动文本对象 VeryLazy
nvim-treesitter/nvim-treesitter-context 滚动时固定显示当前函数/类上下文 VeryLazy
kevinhwang91/nvim-ufo 高性能代码折叠(zR/zM) BufReadPost
HiPhish/rainbow-delimiters.nvim 彩虹括号 BufReadPre
lukas-reineke/indent-blankline.nvim 缩进参考线(scope 交给 mini.indentscope) BufReadPost
windwp/nvim-ts-autotag HTML/JSX 标签自动闭合与重命名 InsertEnter
numToStr/Comment.nvim gcc/gc 注释 BufReadPre
kylechui/nvim-surround ys/cs/ds 环绕操作 BufReadPre
folke/flash.nvim 快速跳转(按命令调用) VeryLazy
echasnovski/mini.nvim 平滑动画、智能删 buffer、缩进范围高亮 VeryLazy
stevearc/oil.nvim 像编辑 buffer 一样操作文件系统(-) 按键
folke/persistence.nvim 会话保存与恢复 BufReadPre
uga-rosa/ccc.nvim 颜色选择器(:CccPick) 启动
OXY2DEV/markview.nvim Markdown 可视化渲染 ft=markdown
iamcco/markdown-preview.nvim 浏览器预览 Markdown(<leader>mp) 按键
folke/todo-comments.nvim 高亮 TODO/FIXME 并聚合到 Trouble VeryLazy
mbbill/undotree 可视化撤销树(<leader>uu) 按键
MagicDuck/grug-far.nvim 项目级查找替换(<leader>fR) 按键
stevearc/overseer.nvim 任务运行器(<leader>o*;<leader>rf 多语言运行当前文件) 命令

搜索与导航

插件 作用 加载方式
folke/which-key.nvim 快捷键提示向导 VeryLazy
folke/snacks.nvim (picker) 文件/内容/符号/诊断等所有模糊搜索 启动
stevearc/aerial.nvim 符号大纲(<leader>cs) 按键
folke/trouble.nvim 诊断/符号/引用列表 命令
dnlhc/glance.nvim 声明/类型定义预览(gD/gy) 命令

LSP 与补全

插件 作用 加载方式
williamboman/mason.nvim LSP/工具安装器 命令
williamboman/mason-lspconfig.nvim Mason 与 lspconfig 桥接,自动启用已装 server BufReadPre
neovim/nvim-lspconfig LSP 客户端配置 依赖
saghen/blink.cmp 补全(LSP/路径/buffer/片段/命令),替代 nvim-cmp InsertEnter
L3MON4D3/LuaSnip + friendly-snippets 代码片段引擎与片段库 启动
stevearc/conform.nvim 保存时按文件类型格式化 BufWritePre
WhoIsSethDaniel/mason-tool-installer.nvim 让 Mason 自动安装 conform 需要的格式化工具(启动时检查,24 小时内不重复;goimports 仅在系统装有 Go 时安装) 启动
内置 inlay hints LSP 行内类型提示(自动开启 + <leader>uh) LspAttach

已配置的 LSP server:lua_ls、pyright、clangd、ts_ls、bashls、
html、cssls、jsonls、yamlls(rust-analyzer 由 rustaceanvim 管理)。

Git

插件 作用 加载方式
lewis6991/gitsigns.nvim 行内增删改标记、hunk 跳转 BufReadPre
sindrets/diffview.nvim Git 差异/文件历史查看 命令
snacks (lazygit/gitbrowse) 终端 lazygit、GitHub 链接跳转 按键

测试 / 调试 / 构建

插件 作用 加载方式
nvim-neotest/neotest + python/rust/plenary 适配器 测试运行/调试/总览 VeryLazy
mfussenegger/nvim-dap 调试协议(codelldb 调试 C/C++/Rust,debugpy 调试 Python) 命令
rcarriga/nvim-dap-ui 调试界面 依赖
theHamsta/nvim-dap-virtual-text 调试时变量虚拟文本 依赖
Weissle/persistent-breakpoints.nvim 断点持久化 依赖
jay-babu/mason-nvim-dap.nvim 自动安装 codelldb、debugpy 依赖
mrcjkb/rustaceanvim Rust 专用 LSP/调试配置 ft=rust
saecki/crates.nvim Cargo.toml 依赖版本管理 ft=rust/toml
akinsho/flutter-tools.nvim Flutter 开发支持 ft=dart

快捷键

完整的学习手册见 /2026/09/01/neovim-kuai-jie-jian-xue-xi-shou-ce/。该手册以实际配置为准,包含常用操作、全部自定义映射、相关原生命令和学习顺序;本节只保留速查表。

<leader> 是空格。大部分功能快捷键以空格开始;窗口、缓冲区和标签页等高频切换使用方向键组合。配置不使用 F1-F12 或 Alt 组合键,以减少与 Niri 全局按键的冲突。输入空格后可由 which-key 查看当前可用按键。

快捷键入口

前缀 作用
<Space> 自定义快捷键总入口;后接 b/c/d/f/g/h/m/o/r/s/t/T/u/x 进入对应功能组
g 代码导航与常用移动
z 代码折叠
[ / ] 跳到上一个 / 下一个诊断或 Git 修改
<S-Left> / <S-Right> 上一个 / 下一个缓冲区
<S-Up> / <S-Down> 上一个 / 下一个 Vim 标签页
<C-i/j/k/l> 按 IJKL 方向切到上 / 左 / 下 / 右侧分屏窗口
<C-PageUp> / <C-PageDown> 缩小 / 扩大当前窗口宽度
<C-S-PageUp> / <C-S-PageDown> 缩小 / 扩大当前窗口高度
<C-\\> 浮动终端
K 当前位置的语言服务文档
jj(插入模式) 退出插入模式

日常操作

按键 作用
<leader>w / <leader>q / <leader>Q 保存 / 退出 / 全部退出
jj(插入模式) 退出插入模式
<Esc> 清除搜索高亮
- Oil 文件浏览器
<leader>tt / <C-\\> 打开或切换终端(当前路径)
< / >(可视模式) 缩进并保持选中
p(可视模式) 粘贴并替换选区;被替换内容进入 Yanky 历史,可用 <C-p> 找回

窗口与缓冲区

按键 作用
<C-i> / <C-j> / <C-k> / <C-l> 跳转上 / 左 / 下 / 右窗口
<leader>sv / <leader>sh 垂直 / 水平分割
<leader>sx / <leader>so 关闭窗口 / 只保留当前窗口
<leader>se / <leader>sm 均衡 / 最大化窗口
<leader>bb / <leader>bd / <leader>bo 缓冲区列表 / 关闭当前 / 关闭其他
<S-Left> / <S-Right> 上一个 / 下一个缓冲区
1 至 9(普通模式) 直接切到顶部第 1 至第 9 个文件

顶部显示的一排文件名通常是 缓冲区,不是 Vim 标签页;要在这些文件之间切换,请使用 <S-Left>、<S-Right>,按 1 至 9 直达对应文件,或按 <Space>bb 从列表选择。分屏后,使用 <C-i/j/k/l> 进入目标窗口,再用 PageUp/PageDown 组合调整窗口大小。

分屏窗口

按键 作用
<C-i> / <C-j> / <C-k> / <C-l> 切到上 / 左 / 下 / 右侧窗口
<C-PageUp> / <C-PageDown> 左右缩小 / 扩大当前窗口
<C-S-PageUp> / <C-S-PageDown> 上下缩小 / 扩大当前窗口
<C-w>v / <C-w>s 左右 / 上下分屏
<C-w>c / <C-w>o 关闭当前窗口 / 只保留当前窗口
<Space>sv / <Space>sh 左右 / 上下分屏(自定义写法)

Vim 标签页

按键 作用
<S-Up> / <S-Down> 上一个 / 下一个标签页
<leader>Tn / <leader>Tx / <leader>To 新建标签页 / 关闭当前标签页 / 只保留当前标签页
:tabclose 关闭当前标签页(原生命令)

数字键 1 至 9 已专门用于切换顶部文件栏中的缓冲区,因此不再作为重复次数前缀使用。

查找与文件

按键 作用
<leader>e 文件浏览器
<leader>ff / <leader>fr 查找文件 / 最近文件
<leader>fg / <leader>fw 全局搜索 / 搜索光标词或选区
<leader>fs / <leader>fh / <leader>fk 文件符号 / 帮助 / 快捷键
<leader>fR 项目级查找替换

代码与诊断

这些 LSP 键只在语言服务已附加的文件中生效。

按键 作用
K 悬浮文档
gd / gD 定义 / 声明
gr / gi / gy 引用 / 实现 / 类型定义
[d / ]d 上一条 / 下一条诊断
<leader>ca / <leader>cr / <leader>cf 代码动作 / 重命名 / 格式化
<leader>cs 符号大纲
<leader>xd / <leader>xx / <leader>xX 当前诊断 / 工作区诊断 / 当前文件诊断

Git 与调试

按键 作用
<leader>gg / <leader>gb Git 管理界面 / 浏览 Git 链接
<leader>gd / <leader>gh 查看差异 / 文件历史
[h / ]h 上一处 / 下一处 Git 修改
<leader>dc / <leader>db 调试继续 / 切换断点
<leader>do / <leader>di / <leader>dO 单步跳过 / 进入 / 退出
<leader>dB / <leader>dr / <leader>du 条件断点 / 调试交互终端 / 调试界面
<leader>mb / <leader>mr / <leader>md C++ 构建 / 构建并运行 / 构建并调试

多语言运行与调试

语言 运行 调试
Python <leader>rf(python3 运行当前文件) <leader>dc 选择 debugpy 配置;测试用 <leader>td
C/C++(CMake 项目) <leader>mr 构建并运行 <leader>md 构建后调试,或 <leader>dc 直接调试
C/C++(单文件) <leader>rf 自动编译到 /tmp 并运行 <leader>dc 选择 codelldb
Rust <leader>rr / <leader>rt / <leader>rd(rustaceanvim) 同上
Shell / Lua / JS / TS / Go <leader>rf(bash / lua / node / go run) —

<leader>rf 由 Overseer 提供,按当前文件类型选择解释器或编译器,在文件所在目录执行。
运行/调试依赖首次启动时由 Mason 自动安装:codelldb(C/C++/Rust)、debugpy(Python)。
Python 测试默认使用 pytest,项目需安装 pytest,否则自动回退 unittest。

按需功能

按键 作用
<leader>tr / <leader>tf / <leader>td 测试最近项 / 当前文件 / 调试最近项
<leader>ts / <leader>to 测试总览 / 输出
<leader>rf 运行当前文件(Python/C/C++/Shell/Lua/JS/TS/Go/Rust)
<leader>rr / <leader>rt / <leader>rd Rust 运行 / 测试 / 调试(仅 Rust 文件)
<leader>re / <leader>rc Rust 解释错误 / 打开 Cargo.toml(仅 Rust 文件)
<leader>or / <leader>ol / <leader>oo 运行任务 / 任务列表 / 快速操作
<leader>us / <leader>uw / <leader>uh / <leader>uu 拼写 / 自动换行 / 行内提示 / 撤销树
<leader>l / <leader>M / <leader>n Lazy / Mason / 通知历史

补全与折叠

按键 作用
<C-j> / <C-k>(插入模式) 下一个 / 上一个补全项
<C-b> / <C-f>(插入模式) 补全文档滚动
<C-/> / <CR>(插入模式) 手动补全 / 确认
zR / zM / zc / zo / za 展开全部 / 关闭全部 / 关闭 / 展开 / 切换折叠

常用维护命令

命令 作用
:Lazy sync 安装 / 更新 / 清理插件
:Lazy clean 删除配置中不再引用的插件
:Lazy update 更新全部插件
:Mason LSP / DAP 工具管理
:MasonUpdate 更新 Mason 注册表(解决”有更新但无法更新”)
:MasonToolsInstall 立即安装 / 补齐所有格式化工具
:TSUpdate 更新 tree-sitter 解析器
:ConformInfo 查看格式化工具状态

说明

  • AI 补全插件已从配置中移除,如需 AI 补全可单独引入。
  • inlay hints 使用 Neovim 内置实现(0.10+),无需第三方插件。
  • 诊断/导航类功能由 Trouble、Glance、aerial 与 LSP 内置完成(Lspsaga 已移除)。
  • 终端由 snacks.nvim 内置终端提供(<leader>tt / <C-\>),toggleterm.nvim 已移除。