# 快捷键总览

本文档汇总当前配置中显式定义的快捷键，不包含插件自带的默认快捷键。

模式说明：`n` 为 Normal，`v` 为 Visual/Select，`x` 为 Visual，`i` 为 Insert，`o` 为 Operator-pending，`c` 为 Command-line，`t` 为 Terminal。

`<leader>` 和 `<localleader>` 都是空格。

## 分组原则

| 前缀 | 领域 |
| --- | --- |
| `<leader>f` | 查找 / Telescope |
| `<leader>b` | Buffer |
| `<leader>w` | Window |
| `<leader>l` | LSP |
| `<leader>x` | Diagnostics |
| `<leader>n` | Notes / Telekasten |
| `<leader>m` | Markdown / Markview |
| `<leader>r` | Run / Restart |
| `<leader>t` | Terminal |
| `<leader>y` | Yank / Copy |

## 全局编辑与移动

来源：[lua/core/keymaps.lua](lua/core/keymaps.lua)

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| `n` | `j` | 无计数时按视觉行向下移动 |
| `n` | `k` | 无计数时按视觉行向上移动 |
| `n` | `<Esc>` | 清除搜索高亮 |
| `n` | `n` | 下一个搜索结果并居中 |
| `n` | `N` | 上一个搜索结果并居中 |
| `n` | `<C-d>` | 向下半页并居中 |
| `n` | `<C-u>` | 向上半页并居中 |
| `x` | `p` | 粘贴但不覆盖寄存器 |
| `n`, `v` | `<leader>dd` | 删除但不覆盖寄存器 |
| `v` | `<` | 减少缩进并保持选区 |
| `v` | `>` | 增加缩进并保持选区 |
| `n` | `J` | 合并行并保持光标位置 |
| `n`, `v` | `<A-j>` | 当前行或选区下移 |
| `n`, `v` | `<A-k>` | 当前行或选区上移 |

## 窗口与 Buffer

来源：[lua/core/keymaps.lua](lua/core/keymaps.lua)

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| `n` | `<C-h>` | 移动到左侧窗口 |
| `n` | `<C-j>` | 移动到下方窗口 |
| `n` | `<C-k>` | 移动到上方窗口 |
| `n` | `<C-l>` | 移动到右侧窗口 |
| `n` | `<leader>wv` | 垂直分屏 |
| `n` | `<leader>ws` | 水平分屏 |
| `n` | `<leader>wh` | 减少窗口宽度 |
| `n` | `<leader>wl` | 增加窗口宽度 |
| `n` | `<leader>wj` | 减少窗口高度 |
| `n` | `<leader>wk` | 增加窗口高度 |
| `n` | `<C-Left>` | 减少窗口宽度 |
| `n` | `<C-Right>` | 增加窗口宽度 |
| `n` | `<C-Down>` | 减少窗口高度 |
| `n` | `<C-Up>` | 增加窗口高度 |
| `n` | `<leader>bn` | 下一个 buffer |
| `n` | `<leader>bp` | 上一个 buffer |
| `n` | `<leader>bb` | Buffer 列表 |

## Telescope

来源：[lua/core/keymaps.lua](lua/core/keymaps.lua)

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| `n` | `<leader>ff` | 查找文件 |
| `n` | `<leader>fg` | 全文搜索 |
| `n` | `<leader>fb` | Buffer 列表 |
| `n` | `<leader>fh` | Help tags |

## Telekasten / 笔记

来源：[lua/core/keymaps.lua](lua/core/keymaps.lua)

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| `n` | `<leader>nf` | 查找笔记 |
| `n` | `<leader>ng` | 搜索笔记 |
| `n` | `<leader>nd` | 打开今日笔记 |
| `n` | `<leader>nl` | 跟随链接 |
| `n` | `<leader>nn` | 新建笔记 |
| `n` | `<leader>nc` | 日历 |
| `n` | `<leader>nb` | 反向链接 |
| `n` | `<leader>ni` | 插入图片链接 |
| `i` | `[[` | 插入笔记链接 |

## Markdown / Markview

来源：[lua/plugins/notes.lua](lua/plugins/notes.lua)

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| `n` | `<leader>mm` | 切换 Markview |

## Flash

来源：[lua/plugins/editor.lua](lua/plugins/editor.lua)

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| `n`, `x`, `o` | `s` | Flash 快速跳转 |
| `n`, `x`, `o` | `S` | Flash Treesitter 跳转 |
| `o` | `r` | Flash remote 操作 |
| `o`, `x` | `R` | Flash Treesitter search |
| `c` | `<C-s>` | 切换 Flash search |

## LSP

来源：[lua/lsp/keymaps.lua](lua/lsp/keymaps.lua)

这些快捷键是 buffer-local，只在 LSP attach 到当前 buffer 后生效。

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| `n` | `K` | Hover 文档 |
| `n` | `<leader>ld` | 跳转定义 |
| `n` | `<leader>lD` | 跳转声明 |
| `n` | `<leader>lv` | 垂直分屏打开定义 |
| `n` | `<leader>la` | Code action |
| `n` | `<leader>lr` | 重命名 |
| `n` | `<leader>lR` | References |
| `n` | `<leader>lt` | Type definition |
| `n` | `<leader>ls` | Document symbols |
| `n` | `<leader>lw` | Workspace symbols |
| `n` | `<leader>li` | Implementations |
| `n` | `<leader>lo` | Organize imports 后格式化 |

## 诊断

来源：[lua/lsp/keymaps.lua](lua/lsp/keymaps.lua)、[lua/lsp/diagnostic.lua](lua/lsp/diagnostic.lua)、[lua/core/keymaps.lua](lua/core/keymaps.lua)

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| `n` | `<leader>xx` | 光标处诊断浮窗 |
| `n` | `<leader>xl` | 当前行诊断浮窗 |
| `n` | `<leader>xn` | 下一个诊断 |
| `n` | `<leader>xp` | 上一个诊断 |
| `n` | `<leader>xq` | 打开诊断 location list |
| `n` | `<leader>xt` | 开关诊断显示 |

## 补全与 Snippet

来源：[lua/lsp/completion.lua](lua/lsp/completion.lua)、[lua/plugins/lang.lua](lua/plugins/lang.lua)

Blink completion：

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| 补全菜单 | `<C-y>` | 接受补全 |
| 补全菜单 | `<C-j>` | 下一个候选 |
| 补全菜单 | `<C-k>` | 上一个候选 |
| snippet | `<C-l>` | Snippet 向前跳 |
| snippet | `<C-h>` | Snippet 向后跳 |

UltiSnips：

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| insert/snippet | `<Tab>` | 展开 snippet |
| insert/snippet | `<C-i>` | Snippet 向前跳 |
| insert/snippet | `<C-u>` | Snippet 向后跳 |

## 终端、运行与复制

来源：[lua/core/terminal.lua](lua/core/terminal.lua)、[lua/core/runner.lua](lua/core/runner.lua)、[lua/core/keymaps.lua](lua/core/keymaps.lua)

| 模式 | 快捷键 | 作用 |
| --- | --- | --- |
| `n` | `<leader>tt` | 打开/关闭浮动终端 |
| `t` | `<Esc>` | 关闭浮动终端 |
| `n` | `<leader>rr` | 运行当前文件 |
| `n` | `<leader>rR` | 重启 Neovim |
| `n` | `<leader>yp` | 复制当前文件绝对路径 |
| `n` | `<leader>ya` | 复制整个 buffer |

## 仍需注意的点

| 快捷键 | 当前情况 |
| --- | --- |
| `<C-h/j/k/l>` | Normal 模式用于窗口移动；补全/snippet 场景中用于补全选择或 snippet 跳转。 |
| `<C-u>` | Normal 模式用于向上半页；UltiSnips 中用于 snippet 向后跳。 |
| `R` | Normal 模式已还给 Vim 原生行为；Flash 仍在 operator/visual 中使用 `R`。 |
| `<Esc>` | Normal 模式清除搜索高亮；Terminal 模式关闭浮动终端。 |

