Files
dotfiles/NVIM_GUIDE.md
Li Tang 6fd5d96043 refactor(nvim): 完整重写配置,支持 Go/Rust/Python/TypeScript 开发
- 架构重构:新增 plugins/lang/ 子目录,按语言拆分配置
- 补全引擎:nvim-cmp → blink.cmp + LuaSnip
- 文件浏览:新增 neo-tree(<Space>e)
- 语言支持:
  - Go: ray-x/go.nvim + dap-go + neotest-go
  - Rust: rustaceanvim + crates.nvim
  - Python: venv-selector + dap-python + neotest-python
  - TypeScript: typescript-tools.nvim(替换 ts_ls)
- LSP: lazydev + mason + mason-lspconfig + fidget + inc-rename
- 格式化: conform.nvim(lsp_format fallback,保存时自动格式化)
- Lint: nvim-lint(selene 替换 luacheck,Mason 可直接安装)
- UI: snacks.nvim(dashboard+notifier+picker)+ noice + lualine + bufferline
- 编辑增强: mini.ai + mini.surround + grug-far + flash + ufo + trouble v3
- 删除废弃文件: cmp/coding/null-ls/mason/lspconfig/go/python 等旧文件
- 修复: Neovim 0.12 treesitter query 校验报错(noice routes 过滤)
- 新增: NVIM_GUIDE.md 快捷键使用手册

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-07 16:55:07 +08:00

367 lines
9.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Neovim 配置使用手册
> **Leader 键 = `Space`(空格)**
> 任何时候按住 `Space` 稍等,**which-key** 会弹出所有可用提示菜单。
---
## 🚀 第一次启动
1. 打开 Neovim`nvim`
2. lazy.nvim 自动安装所有插件(等待完成)
3. 重启 nvim再运行 `:Lazy sync`
4. `:Mason` 查看工具安装状态
5. `:checkhealth` 检查环境健康
---
## 📁 文件树neo-tree
| 快捷键 | 功能 |
|--------|------|
| `<Space>e` | **打开/关闭文件树** |
| `<Space>o` | 聚焦到文件树 |
| `<Space>ge` | 浮动显示 Git 状态树 |
**文件树内操作:**
| 按键 | 功能 |
|------|------|
| `Enter` / `l` | 打开文件/展开目录 |
| `h` | 折叠目录 |
| `a` | 新建文件(末尾加 `/` 则创建目录) |
| `d` | 删除 |
| `r` | 重命名 |
| `y` | 复制 |
| `x` | 剪切 |
| `p` | 粘贴 |
| `q` | 关闭文件树 |
---
## 🔍 查找 / 搜索
| 快捷键 | 功能 |
|--------|------|
| `<Space>ff` | **查找文件** |
| `<Space>fr` | 最近打开的文件 |
| `<Space>fb` | 已打开的缓冲区 |
| `<Space>fg` | **全局内容搜索grep** |
| `<Space>fw` | 搜索光标下的单词 |
| `<Space>fh` | 搜索帮助文档 |
| `<Space>fk` | 查看所有快捷键 |
| `<Space>fs` | 当前文件符号 |
| `<Space>fS` | 工作区符号 |
| `<Space>fd` | 诊断错误 |
| `<Space>ft` | TODO 注释 |
| `<Space>sr` | **项目范围搜索替换**grug-far |
---
## 💡 LSP 代码智能
| 快捷键 | 功能 |
|--------|------|
| `gd` | **跳转到定义** |
| `gD` | 跳转到声明 |
| `gr` | 查看所有引用 |
| `gI` | 跳转到实现 |
| `gy` | 跳转到类型定义 |
| `K` | **悬浮显示文档** |
| `gK` | 函数签名帮助 |
| `<C-k>` | 签名帮助(插入模式) |
| `<Space>ca` | **代码操作**(自动修复、重构) |
| `<Space>cr` | **重命名符号**(实时预览) |
| `<Space>cd` | 显示当前行诊断详情 |
| `<Space>cl` | LSP 状态信息 |
| `<Space>cf` | **格式化**(文件或选中范围) |
| `<Space>uf` | 切换当前缓冲区自动格式化 |
| `<Space>uF` | 切换全局自动格式化 |
| `<Space>uh` | 切换 Inlay Hints |
| `]d` / `[d` | 跳到下/上一个诊断 |
---
## 🔴 诊断列表Trouble
| 快捷键 | 功能 |
|--------|------|
| `<Space>xx` | 工作区所有诊断 |
| `<Space>xX` | 当前文件诊断 |
| `<Space>xs` | 符号列表 |
| `<Space>xL` | 位置列表 |
| `<Space>xQ` | Quickfix 列表 |
| `]q` / `[q` | 在 Trouble 列表内跳转 |
---
## ✍️ 文本编辑增强
### 包围操作mini.surround前缀 `gs`
| 快捷键 | 功能 | 示例 |
|--------|------|------|
| `gsa` | 添加包围 | `gsaiw"` = 用 `"` 包围单词 |
| `gsd` | 删除包围 | `gsd"` = 删除 `"` |
| `gsr` | 替换包围 | `gsr"'` = `"` 替换为 `'` |
| `gsf` | 向前查找包围 | |
| `gsh` | 高亮包围 | |
### 文本对象mini.ai在 d/c/y/v 后使用)
> `a` = around含包围符号`i` = inner仅内容
| 对象 | 说明 |
|------|------|
| `af` / `if` | 函数 |
| `ac` / `ic` | 类 |
| `aa` / `ia` | 参数 |
| `ab` / `ib` | 代码块 |
| `ae` / `ie` | 整个文件 |
| `aq` / `iq` | 引号 |
| `at` / `it` | HTML/JSX 标签 |
示例:`daf` 删除整个函数,`vif` 选中函数体,`caa` 修改整个参数
### 注释(`gc` 系列)
| 快捷键 | 功能 |
|--------|------|
| `gcc` | 行注释切换 |
| `gbc` | 块注释切换 |
| `gc{motion}` | 注释 motion 范围 |
| `gcO` / `gco` | 在上/下方插入注释 |
### 多光标vim-visual-multi
| 快捷键 | 功能 |
|--------|------|
| `<C-n>` | 选中光标下的词(重复按继续选下一个) |
| `<C-Down/Up>` | 向下/上添加光标 |
| `q` | 跳过当前,选下一个 |
| `<Esc>` | 退出多光标 |
---
## 🐛 调试DAP
| 快捷键 | 功能 |
|--------|------|
| `<Space>dc` | **开始/继续调试** |
| `<Space>db` | 切换断点 |
| `<Space>dB` | 条件断点 |
| `<Space>di` | 单步进入 |
| `<Space>do` | 单步跳出 |
| `<Space>dO` | 单步跳过 |
| `<Space>dC` | 运行到光标处 |
| `<Space>dt` | 终止调试 |
| `<Space>du` | 调试 UI 面板 |
| `<Space>dw` | 悬浮查看变量值 |
| `<Space>dr` | 打开 REPL |
| `<Space>dl` | 重新运行上次调试 |
---
## 🐹 Go 开发
| 快捷键 | 功能 |
|--------|------|
| `<Space>gr` | 运行 |
| `<Space>gb` | 构建 |
| `<Space>gv` | go vet |
| `<Space>gi` | 实现接口 |
| `<Space>gge` | 生成 if err 错误处理 |
| `<Space>ggf` | 填充结构体字段 |
| `<Space>ggs` | 填充 switch case |
| `<Space>gts` | 切换测试/实现文件 |
| `<Space>gtt` | 运行测试 |
| `<Space>gtf` | 测试当前函数 |
| `<Space>gtc` | 查看测试覆盖率 |
| `<Space>gta` | 添加 struct tag |
| `<Space>dtg` | 调试当前 Go 测试 |
---
## 🦀 Rust 开发
| 快捷键 | 功能 |
|--------|------|
| `<Space>rr` | 运行目标列表 |
| `<Space>rt` | 测试目标列表 |
| `<Space>rd` | 调试目标列表 |
| `<Space>re` | 解释错误 |
| `<Space>rm` | 展开宏 |
| `<Space>rc` | 打开 Cargo.toml |
| `<Space>rp` | 跳转到父模块 |
| `<Space>rx` | 打开外部文档 |
| `<Space>rcu` | 升级所有 crate 依赖 |
| `<Space>rco` | 查看 crate 信息 |
---
## 🐍 Python 开发
| 快捷键 | 功能 |
|--------|------|
| `<Space>pt` | 运行测试 |
| `<Space>pT` | 运行当前文件全部测试 |
| `<Space>pd` | DAP 调试测试 |
| `<Space>ps` | 停止测试 |
| `<Space>po` | 查看测试输出 |
| `<Space>pO` | 测试输出面板 |
| `<Space>pS` | 测试摘要面板 |
| `<Space>dpm` | 调试当前方法 |
| `<Space>dpc` | 调试当前类 |
---
## 📘 TypeScript/JavaScript 开发
| 快捷键 | 功能 |
|--------|------|
| `<Space>to` | 整理 import |
| `<Space>ta` | 添加缺失 import |
| `<Space>tu` | 删除未使用 import |
| `<Space>tf` | 修复所有问题 |
| `<Space>tr` | 重命名文件(自动更新引用) |
| `<Space>tR` | 查看文件引用 |
---
## 🌿 Git 操作
| 快捷键 | 功能 |
|--------|------|
| `<Space>gg` | **打开 LazyGit** |
| `<Space>gl` | Git 日志 |
| `<Space>gf` | 当前文件 Git 历史 |
| `<Space>gs` | 暂存当前 hunk |
| `<Space>gr` | 重置当前 hunk |
| `<Space>gS` | 暂存整个文件 |
| `<Space>gR` | 重置整个文件 |
| `<Space>gu` | 取消暂存 hunk |
| `<Space>gp` | 预览变更 hunk |
| `<Space>gb` | 查看当前行 blame |
| `<Space>gB` | 开关行 blame 显示 |
| `<Space>gd` | 文件 diff |
| `]h` / `[h` | 跳到下/上一个 hunk |
| `ih` | 选中 hunkVisual/Operator 模式) |
---
## 🖥️ 终端
| 快捷键 | 功能 |
|--------|------|
| `<C-\>` | 切换终端(浮动) |
| `<Space>tf` | 浮动终端 |
| `<Space>th` | 水平终端 |
| `<Space>tv` | 垂直终端 |
| `Esc``jk` | 退出终端模式 |
---
## ⚡ 快速跳转Flash
| 快捷键 | 功能 |
|--------|------|
| `s` | 字符跳转(高亮标记) |
| `S` | Treesitter 节点跳转 |
| `f/F/t/T` | 行内增强跳转 |
| `r` (operator) | Flash 远程操作 |
---
## 📑 缓冲区管理
| 快捷键 | 功能 |
|--------|------|
| `<S-h>` | 上一个缓冲区 |
| `<S-l>` | 下一个缓冲区 |
| `<Space>bd` | 关闭当前缓冲区 |
| `<Space>bD` | 强制关闭 |
| `<Space>bo` | 关闭其他缓冲区 |
| `<Space>bp` | 标记/取消固定缓冲区 |
| `<Space>br` / `<Space>bl` | 关闭右/左侧缓冲区 |
---
## 🪟 窗口管理
| 快捷键 | 功能 |
|--------|------|
| `<C-h/j/k/l>` | 切换窗口 |
| `<Space>sv` | 垂直分割 |
| `<Space>sh` | 水平分割 |
| `<Space>se` | 均分窗口 |
| `<Space>sx` | 关闭当前窗口 |
| `<C-Up/Down/Left/Right>` | 调整窗口大小 |
---
## 🔢 代码折叠UFO
| 快捷键 | 功能 |
|--------|------|
| `zR` | 展开所有折叠 |
| `zM` | 折叠所有 |
| `zr` | 展开一级 |
| `zm` | 折叠一级 |
| `zp` | 预览折叠内容 |
---
## 🗂️ 会话管理
| 快捷键 | 功能 |
|--------|------|
| `<Space>qs` | 恢复上次会话 |
| `<Space>ql` | 恢复最后会话 |
| `<Space>qd` | 退出不保存会话 |
---
## 🔔 通知
| 快捷键 | 功能 |
|--------|------|
| `<Space>nh` | 通知历史 |
| `<Space>nd` | 关闭所有通知 |
| `<Space>snl` | 最后一条消息 |
| `<Space>snh` | Noice 历史 |
---
## ⚙️ 通用编辑技巧
| 快捷键 | 功能 |
|--------|------|
| `<Space>w` | 保存文件 |
| `<Space>q` | 退出 |
| `<Space>Q` | 退出全部 |
| `<Space>h` | 清除搜索高亮 |
| `<Space>r` | 替换光标下单词(全文) |
| `jk` | Insert 模式退出 |
| `<C-d/u>` | 翻页并保持光标居中 |
| `n/N` | 搜索跳转并居中 |
| `J/K` (Visual) | 上下移动选中文本 |
| `>/<` (Visual) | 缩进并保持选中 |
| `p` (Visual) | 粘贴不覆盖寄存器 |
| `]]` / `[[` | 跳到下/上一个同名引用 |
| `]w` / `[w` | 跳到下/上一个引用词 |
| `]t` / `[t` | 跳到下/上一个 TODO |
---
## 🛠️ 常用命令
```
:Lazy 插件管理S=同步更新U=更新全部)
:Mason LSP/工具管理
:LspInfo 当前 LSP 状态
:ConformInfo 格式化工具状态
:checkhealth 环境健康检查
:TSInstall 安装 Treesitter 语法
:noa w 保存(跳过格式化)
```