- 基于
lazy.nvim的插件管理与按需加载 - 基于 Neovim 原生 API 的 LSP,按文件类型通过 Mason 自动安装
blink.cmp补全:LSP、路径、代码片段、Buffer、Ripgrep、命令/搜索历史及自定义词库- Tree-sitter 解析器自动安装,内置自定义语法高亮
- Biome、LSP 格式化,Go 自动整理 imports
- 浮动文件树、FZF 搜索、Git hunk、浮动终端、Markdown 预览与渲染
- 自定义状态栏、折叠、渐变浮窗边框、代码片段和文件类型行为
- 最新稳定版 Neovim(建议
>= 0.11) git- 推荐安装 Nerd Font
- 搜索与预览工具:
ripgrep、fd、bat - Node.js 与 npm:用于部分 LSP 和构建 Markdown Preview
F5可选运行时:node、ts-node、python、go、bash、lua、javac、gcc、google-chrome-stable- 可选 Python provider:设置
PYTHON环境变量
export PYTHON="$(command -v python3)"Tip
LSP Server、Biome 和 Tree-sitter parser 无需手动逐个安装,首次打开对应文件时会自动安装。
Warning
安装前请备份现有的 ~/.config/nvim。
git clone https://github.com/yaocccc/nvim ~/.config/nvim
nvim首次启动会自动安装 lazy.nvim 和插件。修改 lua/plugins/ 后执行:
:Lazy sync常用维护命令:
:Lazy " 插件管理
:Mason " LSP/工具管理
:TSUpdate " 更新 parser
:StartupTime " 启动性能分析.
├── init.lua # 配置入口
├── lua/
│ ├── options.lua # 基础选项、autocmd、折叠
│ ├── keymap.lua # 全局键位
│ ├── lazyinit.lua # lazy.nvim 初始化
│ ├── lspinit.lua # LSP 自动安装与启用
│ ├── blink-cmp-history.lua
│ ├── plugins/ # 插件配置
│ └── ui/ # 高亮与渐变边框
├── lsp/ # 原生 LSP Server 配置
├── ftplugin/ # 文件类型专属行为
├── snippets/ # VS Code 格式代码片段
├── word.txt # blink.cmp 自定义词库
└── lazy-lock.json # 插件版本锁
| 文件类型 | LSP Server | 格式化 |
|---|---|---|
| Lua | lua_ls |
LSP fallback |
| Solidity | solidity_ls |
LSP fallback |
| JavaScript、TypeScript、React | vtsls、tailwindcss |
Biome |
| Vue | vue_ls、vtsls、tailwindcss |
LSP,保存时格式化 |
| HTML | html、tailwindcss |
LSP fallback |
| CSS、SCSS、Less | cssls、tailwindcss |
LSP fallback |
| JSON、JSONC | jsonls |
Biome |
| Go、go.mod、go.work、templates | gopls |
保存时整理 imports 并格式化 |
| sh、Bash、Zsh | bashls |
LSP fallback |
JavaScript、TypeScript、JSON/JSONC 文件会自动安装 Biome。Tailwind LSP 仅在项目存在 tailwind.config.* 时找到项目根目录。
| 模式 | 键 | 功能 |
|---|---|---|
| Normal | gd |
跳转定义 |
| Normal | gD |
跳转声明 |
| Normal | gy |
跳转类型定义 |
| Normal | gi |
跳转实现 |
| Normal | gr |
Finder:引用、定义与实现 |
| Normal | K |
悬浮文档 |
| Normal、Visual | ga |
Code Action |
| Normal | F2 |
重命名 |
| Normal | Ctrl-e |
当前 Buffer 诊断 |
| Normal | \e |
Workspace 诊断 |
| Visual | = |
格式化选区 |
诊断信息会在 CursorHold 时以浮窗显示;LSP semantic tokens 被禁用,以保持自定义高亮一致。
| 模式 | 键 | 功能 |
|---|---|---|
| Normal、Visual | ; |
输入命令(:) |
| Normal | , |
执行寄存器 q 中的宏 |
| Normal | \ |
清除搜索高亮 |
| Normal | Enter |
光标位于匹配项时清除高亮,否则正常回车 |
| Normal | + / _ |
数字自增 / 自减 |
| Normal | Backspace |
删除当前词并进入插入 |
| Insert | Ctrl-h |
删除到词首 |
| Normal、Insert | Ctrl-j |
从下一个逗号处断行 |
| Normal、Visual | Ctrl-s |
交互式替换 |
| Normal、Visual | S |
智能保存:创建目录,必要时 sudo |
| Normal | Q |
强制退出 |
| Normal | R |
重载当前文件 |
| Normal | W |
关闭当前 Buffer |
| Normal | x |
删除字符且不覆盖剪贴板 |
| Visual | Backspace、x、c |
删除或修改且不覆盖剪贴板 |
| Visual | p、P |
粘贴并保留原寄存器 |
| Visual | <、Shift-Tab |
左缩进并保持选区 |
| Visual | >、Tab |
右缩进并保持选区 |
| Normal、Insert、Visual | Alt-Up / Alt-Down |
上下移动行或选区 |
| Normal | Alt-a |
全选 |
| Normal、Insert | Ctrl-u |
清空当前行 |
| Normal | Space |
在首列、首个非空字符、行尾间跳转 |
| Normal、Visual | 0 |
匹配括号跳转 |
| Visual | t / T |
下划线与驼峰互转;T 首字母大写 |
| Insert | ( [ { " ' ` |
自动补全配对字符 |
| Insert | Backspace |
成对删除括号或引号 |
命令行模式中 Ctrl-a / Ctrl-e 跳到首尾,Up / Down 浏览历史。
| 模式 | 键 | 功能 |
|---|---|---|
| Normal、Insert、Visual | Shift-Up / Shift-Down |
向上/下选择文本 |
| Normal、Insert、Visual | Ctrl-Shift-Up / Ctrl-Shift-Down |
快速移动 10 行 |
| Normal、Insert、Visual | Ctrl-Shift-Left / Ctrl-Shift-Right |
跳到行首 / 行尾 |
| Visual | v / V |
扩大 / 缩小选区 |
| 模式 | 键 | 功能 |
|---|---|---|
| Normal | sv / sp |
左右 / 上下分屏 |
| Normal | sc / so |
关闭当前 / 关闭其他窗口 |
| Normal | s + Arrow |
聚焦对应窗口 |
| Normal | Ctrl-Space |
切换窗口 |
| Normal | s= |
平均窗口大小 |
| Normal | Alt-, / Alt-. |
缩小 / 增大窗口 |
| Normal | ss |
下一个 Buffer |
| Normal、Insert、Visual | Alt-Left / Alt-Right |
上一个 / 下一个 Buffer |
| Normal | - |
折叠或展开;无折叠时创建段落折叠 |
| Visual | - |
折叠选区 |
| Normal | \w |
切换自动换行 |
| Normal | tt |
下方打开 10 行终端 |
手动折叠和 undo 历史会持久化到 cache/,重新打开文件时恢复光标位置和视图。
| 键 | 功能 |
|---|---|
Ctrl-p |
项目文件 |
Ctrl-a |
全局文本搜索 |
Ctrl-b |
Buffer 列表 |
Ctrl-l |
当前 Buffer 行搜索 |
Ctrl-g |
Git 变更文件 |
Ctrl-h |
当前目录历史文件 |
搜索根目录使用启动 Neovim 时的 $PWD。
| 模式 | 键 | 功能 |
|---|---|---|
| Insert | Tab |
选择下一项、触发补全或跳到下个 snippet 占位符 |
| Insert | Up / Down |
上一项 / 下一项 |
| Insert | Enter |
接受补全 |
| Insert | Ctrl-y |
选择并接受 |
| Insert | Ctrl-e |
取消补全 |
| Insert | Ctrl-k |
切换补全和文档 |
| Command-line | Tab |
显示、插入或接受补全 |
补全源:lsp、path、snippets、buffer、ripgrep、datword(word.txt)、命令历史和搜索历史。
| 模式 | 键 | 功能 |
|---|---|---|
| Insert | Right |
接受建议;无建议时正常右移 |
| Insert | Ctrl-Up / Ctrl-Down |
上一个 / 下一个建议 |
按 T 打开居中的浮动文件树,首次打开以 $PWD 为根目录。
| 文件树内 | 功能 |
|---|---|
a / A |
新建 |
r |
重命名 |
Left |
关闭目录 |
Right / Enter |
打开节点 |
Backspace |
上级目录 |
P |
将选中目录设为根 |
Esc |
关闭文件树 |
( / ) |
上一个 / 下一个 Git 变更 |
< / > |
上一个 / 下一个诊断 |
? |
帮助 |
其余复制、剪切、粘贴、删除、过滤等键位沿用 Nvim Tree 默认映射。
| 键 | 功能 |
|---|---|
( / ) |
上一个 / 下一个 hunk |
C |
预览当前 hunk |
\g |
Diff 当前文件 |
| 模式 | 键 | 功能 |
|---|---|---|
| Normal、Terminal | Ctrl-t |
打开、隐藏浮动终端 |
| Normal、Insert、Terminal | F5 |
保存并运行当前文件 |
F5 支持 JavaScript、TypeScript、HTML、Python、Go、shell、Lua、Java、C 和 Markdown。窄窗口使用底部终端,宽窗口使用居中浮窗。
| 模式 | 键 | 功能 |
|---|---|---|
| Normal | Enter |
切换当前任务 [ ] / [x],然后正常回车 |
| Normal | Double-click | 切换任务并保存 |
| Visual | B / I |
加粗 / 斜体 |
| Visual | T |
转为待办项 |
| Visual | ` |
行内代码 |
| Visual | C |
代码块 |
| Normal | F5 |
浏览器预览 |
| Normal | F6 |
切换编辑器内 Markdown 渲染 |
Markdown 使用 2 空格缩进,并高亮任务起始日期 S:YYYY-MM-DD、截止日期 D:YYYY-MM-DD、今日和未来两天的 Deadline。
- Go:保存前执行
source.organizeImports;VisualD包裹为/** ... */。 - TypeScript:Visual
D添加文档注释,VisualT包裹try/catch。 - Vue:Visual
D包裹为<!-- ... -->。 - Snippets:覆盖通用、TypeScript/JavaScript/Vue、Go、HTML、Markdown、SQL、Vim、systemd 和 desktop 文件。
| 插件 | 用途 |
|---|---|
| yaocccc/visual-multi.nvim | 多光标编辑 |
| yaocccc/babel.nvim | mm 翻译当前词或选区为中文 |
| yaocccc/vim-comment | Normal ?? 行注释;Visual / 行注释、? 块注释 |
| yaocccc/vim-surround | 添加、修改、删除包围字符 |
| yaocccc/vim-echo | Visual C 为 JS/TS/Vue 插入 console.log |
| yaocccc/vim-fcitx2en | 离开 Insert 模式时切换英文输入法 |
| yaocccc/nvim-lines.lua | 状态栏与标签栏 |
| yaocccc/nvim-foldsign | Sign column 折叠标记 |
| Mr-LLLLL/interestingwords.nvim | ff 高亮当前词,FF 清除全部 |
| uga-rosa/ccc.nvim | :CccPick 颜色选择,:CccHighlighterEnable 颜色高亮 |
| nvimdev/indentmini.nvim | 缩进参考线 |
| yianwillis/vimcdoc | 中文帮助文档 |
| 键 | 功能 |
|---|---|
Ctrl-n |
查找并添加下一个匹配 |
Ctrl-d |
添加全部匹配 |
Ctrl-Up / Ctrl-Down |
向上 / 下添加光标 |
Ctrl-x |
在当前字符添加光标 |
Ctrl-w |
按词添加 |
Ctrl-Left / Ctrl-Right |
开始或扩展选区 |
Tab |
切换扩展模式 |
q |
移除当前区域 |
Esc |
清除多光标 |
本仓库为个人配置,欢迎参考、Fork 和按需修改。