将 README 全面翻译为中文并完善文档,修复 <leader>ss 替换映射
- README.md:完整中文化,补充所有键位映射分类(文件查找、Git、 LSP、Buffer、窗口、终端等),更新文件结构说明,添加开发验证命令 - lua/keymaps.lua:修复 <leader>ss 映射,移除 <<C-r><C-w>> 中多余的 < > 包围,使替换功能正常工作 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a48d83cc2f
commit
93148248d5
186
README.md
186
README.md
@ -1,62 +1,158 @@
|
||||
# Neovim Config
|
||||
# Neovim 配置
|
||||
|
||||
Personal Neovim configuration for **0.12+**.
|
||||
个人 Neovim 配置,目标版本 **0.12+**。
|
||||
|
||||
## Highlights
|
||||
## 核心特性
|
||||
|
||||
- **Built-in plugin manager** — `vim.pack` (Neovim 0.12+), no lazy.nvim/packer
|
||||
- **Custom lazy-loading** — `lua/lazy.lua` (~35 lines), defers heavy modules via `on_event`/`on_keys`/`load`
|
||||
- **mini.nvim monorepo** — starter, pick, files, icons, notify, cmdline, completion, snippets, diff, surround
|
||||
- **LSP + Formatting** — nvim-lspconfig + mason + conform.nvim, format-on-save
|
||||
- **Fast startup** — disables ~20 built-in plugins, clipboard deferred via `vim.schedule()`
|
||||
- **Startup dashboard** — ASCII logo + live module count + startup timing
|
||||
- **内置插件管理器** — `vim.pack`(Neovim 0.12+),无需 lazy.nvim / packer
|
||||
- **自定义懒加载框架** — `lua/lazy.lua`(约 35 行),通过 `on_event` / `on_keys` / `load` 延迟加载重型模块
|
||||
- **mini.nvim 单体插件集** — starter、pick、extra、files、icons、notify、cmdline、completion、snippets、diff、surround
|
||||
- **LSP + 代码格式化** — nvim-lspconfig + mason + conform.nvim,保存时自动格式化
|
||||
- **快速启动** — 禁用约 20 个内置插件,剪贴板通过 `vim.schedule()` 延迟初始化
|
||||
- **启动仪表盘** — ASCII Logo + 实时模块加载统计 + 启动耗时
|
||||
|
||||
## Lazy Loading
|
||||
## 懒加载策略
|
||||
|
||||
| Trigger | Plugins |
|
||||
| 触发条件 | 插件 |
|
||||
|---------------|--------------------------------------|
|
||||
| `VimEnter` | treesitter, lsp, icons |
|
||||
| `InsertEnter` | completion, snippets |
|
||||
| `BufReadPost` | diff, surround |
|
||||
| `VimEnter` | treesitter、lsp、icons |
|
||||
| `InsertEnter` | completion、snippets |
|
||||
| `BufReadPost` | diff、surround |
|
||||
| `BufWritePre` | conform |
|
||||
| Key press | pick, files, fugitive, grugfar |
|
||||
| 按键触发 | pick、files、fugitive、grugfar |
|
||||
|
||||
## Keymaps (Leader = Space)
|
||||
## 键位映射(Leader = 空格)
|
||||
|
||||
| Key | Action |
|
||||
|---------------|---------------------------------|
|
||||
| `<leader>ff` | Find files |
|
||||
| `<leader>fw` | Live grep |
|
||||
| `<leader><leader>` | Buffer picker |
|
||||
| `<leader>-` / `-` | File browser (cwd / current) |
|
||||
| `<leader>gg` | Fugitive git |
|
||||
| `<leader>sr` | Search & replace (grug-far) |
|
||||
| `<leader>fm` | Format buffer |
|
||||
| `gd` / `gh` | Go to definition / hover |
|
||||
| `]d` / `[d` | Next / prev diagnostic |
|
||||
| `<leader>u` | Undotree |
|
||||
### 文件查找(mini.pick)
|
||||
|
||||
## Commands
|
||||
| 键位 | 动作 |
|
||||
|----------------|-----------------------------------|
|
||||
| `<leader>ff` | 查找文件 |
|
||||
| `<leader>fw` | 实时 grep(项目中搜索文本) |
|
||||
| `<leader>fa` | 查找所有文件(含隐藏和忽略) |
|
||||
| `<leader>fh` | 搜索帮助标签 |
|
||||
| `<leader>fo` | 最近打开的文件 |
|
||||
| `<leader>fz` | 当前缓冲区行内搜索 |
|
||||
| `<leader>sk` | 搜索键位映射 |
|
||||
| `<leader><leader>` | Buffer 列表(支持 `<C-d>` 删除) |
|
||||
| `<leader>ft` | 切换文件类型 |
|
||||
|
||||
### 文件浏览器(mini.files)
|
||||
|
||||
| 键位 | 动作 |
|
||||
|------|---------------------------------------|
|
||||
| `-` | 在当前文件所在目录打开文件浏览器 |
|
||||
| `_` | 在项目根目录(git root)打开文件浏览器 |
|
||||
|
||||
### Git
|
||||
|
||||
| 键位 | 动作 |
|
||||
|----------------|--------------------------|
|
||||
| `<leader>gg` | Fugitive(全屏新标签页) |
|
||||
| `<leader>gd` | Git diff 垂直分割 |
|
||||
| `<leader>ghp` | 预览当前 hunk |
|
||||
| `<leader>ghb` | Blame 当前行 |
|
||||
| `<leader>gB` | Blame 整个文件 |
|
||||
| `<leader>gD` | 查看文件 Git 历史 |
|
||||
| `<leader>sr` | 搜索并替换(grug-far) |
|
||||
|
||||
### LSP 与诊断
|
||||
|
||||
| 键位 | 动作 |
|
||||
|--------------|------------------------|
|
||||
| `gd` | 跳转到定义 |
|
||||
| `gh` | 悬停查看文档 |
|
||||
| `<leader>ca` | 代码操作 |
|
||||
| `<leader>fm` | 格式化当前 Buffer |
|
||||
| `df` | 显示行诊断浮动窗口 |
|
||||
| `<leader>ds` | 诊断位置列表 |
|
||||
| `]d` / `[d` | 下一个 / 上一个诊断 |
|
||||
| `]e` / `[e` | 下一个 / 上一个错误 |
|
||||
| `]w` / `[w` | 下一个 / 上一个警告 |
|
||||
|
||||
### Buffer 管理
|
||||
|
||||
| 键位 | 动作 |
|
||||
|--------------|--------------------|
|
||||
| `<leader>x` | 关闭当前 Buffer |
|
||||
| `<leader>bn` | 新建 Buffer |
|
||||
| `<leader>bo` | 关闭其他 Buffer |
|
||||
|
||||
### 编辑与搜索
|
||||
|
||||
| 键位 | 动作 |
|
||||
|--------------|----------------------------|
|
||||
| `<leader>ss` | 全局替换光标下的单词 |
|
||||
| `<leader>u` | 打开内置撤销树 |
|
||||
| `<Esc>` | 清除搜索高亮 |
|
||||
| `J` | 合并行且不移动光标 |
|
||||
|
||||
### 窗口与标签
|
||||
|
||||
| 键位 | 动作 |
|
||||
|--------------|--------------------|
|
||||
| `<C-h/j/k/l>` | 窗口间快速跳转 |
|
||||
| `<leader>tc` | 关闭当前标签页 |
|
||||
| `<leader>tn` | 新建标签页 |
|
||||
| `<leader>]` | 下一个标签页 |
|
||||
| `<leader>[` | 上一个标签页 |
|
||||
|
||||
### 终端
|
||||
|
||||
| 键位 | 动作 |
|
||||
|--------------|----------------------------|
|
||||
| `<leader>tt` | 打开新终端 |
|
||||
| `<C-x>` | 从终端模式返回普通模式 |
|
||||
|
||||
### 文件操作
|
||||
|
||||
| 键位 | 动作 |
|
||||
|--------------|----------------------------|
|
||||
| `<C-s>` | 保存文件 |
|
||||
| `<C-c>` | 复制整个文件内容到剪贴板 |
|
||||
| `<leader>yp` | 复制相对文件路径 |
|
||||
| `<leader>yP` | 复制绝对文件路径 |
|
||||
|
||||
## 命令
|
||||
|
||||
```vim
|
||||
:PackAdd user/repo " Add a plugin
|
||||
:PackDel plugin-name " Delete a plugin
|
||||
:PackUpdate [name] " Update all or specific plugin
|
||||
:PackAdd user/repo " 添加插件
|
||||
:PackDel plugin-name " 删除插件
|
||||
:PackUpdate [name] " 更新全部或指定插件
|
||||
```
|
||||
|
||||
## Structure
|
||||
## 文件结构
|
||||
|
||||
```
|
||||
init.lua -- Entry point, disable built-ins
|
||||
lua/options.lua -- Global options
|
||||
lua/keymaps.lua -- Keymaps
|
||||
lua/autocmds.lua -- Autocmds
|
||||
lua/usercmds.lua -- :PackAdd / :PackDel / :PackUpdate
|
||||
lua/pack.lua -- Plugin declarations + lazy bindings
|
||||
lua/lsp.lua -- LSP + conform formatting
|
||||
lua/treesitter.lua -- Deferred parser install
|
||||
lua/lazy.lua -- Custom lazy-loading primitives
|
||||
lua/pick.lua -- mini.pick wrappers
|
||||
lua/git.lua -- Git utilities
|
||||
nvim-pack-lock.json -- Lock file
|
||||
init.lua -- 入口:禁用内置插件,加载核心模块
|
||||
lua/options.lua -- 全局选项
|
||||
lua/keymaps.lua -- 键位映射
|
||||
lua/autocmds.lua -- 自动命令
|
||||
lua/usercmds.lua -- :PackAdd / :PackDel / :PackUpdate
|
||||
lua/pack.lua -- 插件声明 + 懒加载绑定
|
||||
lua/lazy.lua -- 自定义懒加载原语(load / on_event / on_keys)
|
||||
lua/plugins/
|
||||
lsp.lua -- LSP + conform 格式化
|
||||
treesitter.lua -- 语法树:延迟安装 parser、按 buffer 启用高亮
|
||||
pick.lua -- mini.pick 封装:buffer picker、filetype picker
|
||||
git.lua -- Git 工具:hunk 预览、blame、文件历史
|
||||
nvim-pack-lock.json -- 插件锁定文件
|
||||
colors/
|
||||
catppuccin-*.lua -- Catppuccin 配色方案(mocha 为默认)
|
||||
```
|
||||
|
||||
## 开发 / 验证
|
||||
|
||||
```bash
|
||||
# 检查 init.lua 语法
|
||||
nvim --headless -c 'lua dofile("init.lua")' -c 'qa!'
|
||||
|
||||
# 检查特定模块
|
||||
nvim --headless -c 'lua require("pack")' -c 'qa!'
|
||||
|
||||
# 健康检查
|
||||
nvim --headless -c 'checkhealth' -c 'qa!'
|
||||
|
||||
# 测量启动时间
|
||||
nvim --startuptime /tmp/startup.log +q
|
||||
```
|
||||
|
||||
@ -48,12 +48,7 @@ map("n", "J", "mzJ`z", { desc = "合并行且不移动光标" })
|
||||
-- 快速替换当前光标下的单词(全局替换)。
|
||||
-- <C-r><C-w> 在命令行插入光标下的单词。
|
||||
-- 映射展开后形如 :%s/oldword/oldword/gI,光标停在末尾,可修改替换内容。
|
||||
map(
|
||||
"n",
|
||||
"<leader>ss",
|
||||
[[:%s/<<C-r><C-w>>/<<C-r><C-w>>/gI<Left><Left><Left>]],
|
||||
{ desc = "全局替换光标下的单词" }
|
||||
)
|
||||
map("n", "<leader>ss", [[:%s/<C-r><C-w>/<C-r><C-w>/gI<Left><Left><Left>]], { desc = "全局替换光标下的单词" })
|
||||
|
||||
-- Visual 模式下在选区范围内搜索替换
|
||||
-- \%V 是 Vim 正则中的可视区域限定符,确保替换只在选区内生效
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user