Skip to content

Latest commit

 

History

History
451 lines (343 loc) · 13.1 KB

File metadata and controls

451 lines (343 loc) · 13.1 KB

Neovim 使用指南

Leader 键: , | 配色: Solarized Dark | 字体: Hack Nerd Font Mono


目录


快速入门

./install.sh        # 自动检测 nvim/vim,安装依赖、Nerd Font
brew upgrade neovim  # 建议升级到 0.11+

首次启动 Neovim 会自动通过 lazy.nvim 安装所有插件。Mason 会自动下载 LSP 服务器(clangd, rust_analyzer, pyright, jdtls, lua_ls)。

查看所有快捷键: 按任意前缀键后等待 500ms,which-key 会弹出提示面板。


文件与缓冲区

文件树 (nvim-tree)

按键 功能 VS Code
Ctrl-b 开关文件树 Cmd+B 切换侧栏
<Space>nn 开关文件树(同上)
,n 在文件树中定位当前文件
,m 关闭文件树
<Space>to 聚焦文件树窗口

文件树内操作: a 新建文件, d 删除, r 重命名, c/p 复制/粘贴, Enter 打开。

缓冲区导航

按键 功能
/ 上/下一个缓冲区
[b / ]b 上/下一个缓冲区(同上)
Ctrl-n Telescope 缓冲区列表

文件操作

按键 功能
,wa 保存所有文件
,ae 统一设为 UTF-8 + Unix 换行
,dir 为当前文件创建父目录

自动保存: 切换窗口 (FocusLost) 或退出插入模式 (InsertLeave) 时自动保存。


搜索与导航

Telescope (模糊搜索)

按键 功能 VS Code
Ctrl-p 搜索文件 Cmd+P Quick Open
,f 全文搜索 (live grep) Cmd+Shift+F
Ctrl-n 缓冲区列表
<Space>c 命令列表 Cmd+Shift+P
<Space>j Jumplist
<Space>p 恢复上次搜索
<Space>o 文档符号 (LSP) Cmd+Shift+O
<Space>s 工作区符号 (LSP) Cmd+T
,st 搜索所有 TODO/FIXME 注释

Telescope 内: Esc 关闭, Ctrl-j/k 上下选择, Enter 确认, Ctrl-v 垂直分屏打开, Ctrl-x 水平分屏打开。

Flash (快速跳转)

按键 功能
s 输入字符后跳转到匹配位置
S Treesitter 结构选择(选中函数/类等)

s 是此配置中最强大的移动方式之一:按 s,输入目标字符,然后按提示标签直接跳转。

Treesitter 文本对象

按键 功能
af / if 函数外部/内部
ac / ic 类外部/内部
]m / [m 下/上一个函数

示例: daf 删除整个函数, vif 选中函数体, yac 复制整个类。


LSP 智能编程

当 LSP 服务器就绪后(右下角 fidget 显示进度),以下快捷键在代码文件中可用:

跳转

按键 功能
gd 跳转到定义
gy 跳转到类型定义
gi 跳转到实现
gr 查看所有引用 (Trouble 面板)
K 悬浮文档

Ctrl-o 跳回上一个位置, Ctrl-i 跳到下一个位置。

重构

按键 功能 VS Code
F2 / ,rn 重命名符号 (全项目) F2
,ac 代码操作 (自动导入、提取函数等) Cmd+.
,a 代码操作 (可视模式下)
,qf 快速修复 (自动应用首选方案)
,af 格式化代码 Shift+Alt+F

诊断导航

按键 功能
[g / ]g 上/下一个诊断
[t / ]t 上/下一个 TODO 注释

格式化 (保存时自动)

语言 格式化工具
Python ruff_format
Rust rustfmt
Go gofmt + goimports
C/C++ clang-format
Java google-java-format

管理 LSP 服务器

  • :Mason — 打开 Mason UI,查看/安装/更新 LSP 服务器
  • :LspInfo — 查看当前缓冲区的 LSP 状态
  • :LspLog — 查看 LSP 日志(调试用)

代码编辑技巧

Surround (包围编辑)

按键 功能 示例
ys{motion}{char} 添加包围 ysiw" → word 变 "word"
cs{old}{new} 修改包围 cs"' → "hello" 变 'hello'
ds{char} 删除包围 ds" → "hello" 变 hello
S{char} 可视模式添加包围 选中后 S( → 加括号

Comment (注释)

按键 功能
gcc 切换当前行注释
gc{motion} 切换区域注释 (如 gcap 注释段落)
gbc 切换当前行块注释
gc 可视模式下切换注释

Easy Align (对齐)

按键 功能
\= 启动对齐模式

选中多行后按 \=,然后: = 按等号对齐, : 按冒号对齐, <Space> 按空格对齐。

自动补全 (nvim-cmp)

按键 功能
Tab 下一个补全项 / 展开代码片段
Shift-Tab 上一个补全项
Enter 确认选择
Ctrl-Space 手动触发补全
Ctrl-e 关闭补全菜单
Ctrl-b / Ctrl-f 滚动文档窗口

补全来源优先级: LSP > 代码片段 > 缓冲区 > 路径。

移动行

按键 功能 VS Code
Alt-j 当前行下移 Alt+↓
Alt-k 当前行上移 Alt+↑

可视模式下同样生效,可以移动选中的多行。

其他编辑

按键 功能
jk 退出插入模式 (代替 Esc)
,u 打开撤销历史树
Ctrl-R d 插入当前日期 (2026-02-12 格式)
. 可视模式下重复上次操作

Git 集成

Gitsigns (行级操作)

按键 功能
]c / [c 下/上一个修改块 (hunk)
,hs 暂存当前修改块
,hr 还原当前修改块
,hp 预览当前修改块
,hb 显示当前行的 blame 信息

Fugitive (Git 命令)

按键 功能
<Space>gst Git 状态面板
<Space>gd Git diff (分屏对比)
<Space>gbl Git blame (全文件)
<Space>glol Git log (图形化)

Fugitive 状态面板内: s 暂存, u 取消暂存, = 展开 diff, cc 提交。


诊断与调试

Trouble (诊断面板)

按键 功能
<Space>a 工作区所有诊断
<Space>d 当前缓冲区诊断
<Space>q Quickfix 列表
<Space>l Location 列表
gr LSP 引用列表

Quickfix / Location List

按键 功能
[q / ]q 上/下一个 quickfix 条目
[l / ]l 上/下一个 location 条目
yoq 开关 quickfix 窗口
Ctrl-j 开关终端 (底部分屏,终端内也可用)

TODO 注释

代码中的 TODO, FIXME, HACK, NOTE, WARN 会被高亮显示。

按键 功能
]t / [t 跳转到下/上一个 TODO
,st Telescope 搜索所有 TODO

插件速查

插件 用途 加载时机
solarized.nvim 配色方案 启动时
nvim-treesitter 语法高亮 + 文本对象 启动时
nvim-lspconfig LSP 客户端 打开文件
mason.nvim LSP 服务器管理 :Mason
lazydev.nvim Lua/Neovim API 补全 打开 .lua 文件
conform.nvim 代码格式化 保存文件时
nvim-lint 代码检查 打开/保存文件
nvim-cmp 自动补全 启动时
LuaSnip 代码片段 补全时
telescope.nvim 模糊搜索 快捷键触发
trouble.nvim 诊断/引用面板 快捷键触发
fidget.nvim LSP 进度指示器 LSP 就绪时
nvim-tree.lua 文件树 快捷键触发
lualine.nvim 状态栏 启动时
bufferline.nvim 缓冲区标签栏 启动时
alpha-nvim 启动界面 启动时
which-key.nvim 快捷键提示 启动时
dressing.nvim 美化选择/输入 UI 启动时
gitsigns.nvim Git 行级标记 打开文件
vim-fugitive Git 命令 命令触发
flash.nvim 快速跳转 启动时
nvim-surround 包围编辑 启动时
Comment.nvim 注释 启动时
nvim-autopairs 括号自动配对 插入模式
vim-easy-align 文本对齐 快捷键触发
undotree 撤销历史树 快捷键触发
todo-comments.nvim TODO 高亮 打开文件
indent-blankline.nvim 缩进参考线 打开文件
nvim-colorizer.lua 颜色代码预览 打开文件
rainbow-delimiters.nvim 彩虹括号 打开文件
vim-repeat . 重复插件操作 启动时

Vim 内置但少用的实用技巧

文本对象 (Text Objects)

掌握文本对象能极大提升编辑效率。格式: {操作}{范围}{对象}

命令 功能
ciw 修改当前单词 (不含空格)
caw 修改当前单词 (含空格)
ci" 修改引号内内容
ci( 修改括号内内容
ci{ 修改花括号内内容
cit 修改 HTML 标签内内容
cap 修改整个段落
dap 删除整个段落
yiw 复制当前单词
vi{ 选中花括号内内容

i = inner (不含分隔符), a = around (含分隔符)。c/d/y/v 都可搭配。

寄存器 (Registers)

命令 功能
"ayy 复制当前行到寄存器 a
"ap 粘贴寄存器 a 的内容
"Ayy 追加到寄存器 a (大写)
"+y 复制到系统剪贴板
"0p 粘贴上次复制的内容 (不受删除影响)
:reg 查看所有寄存器内容

"0 寄存器永远保存上次 y 复制的内容。删除 (d/x) 不会覆盖它。

宏 (Macros)

命令 功能
qa 开始录制宏到寄存器 a
q 停止录制
@a 执行宏 a
@@ 重复上次执行的宏
10@a 执行宏 a 10 次

标记 (Marks)

命令 功能
ma 在当前位置设标记 a
`a 跳转到标记 a (精确位置)
'a 跳转到标记 a (行首)
`. 跳转到上次修改的位置
`^ 跳转到上次插入的位置
:marks 查看所有标记

小写标记 (a-z) 是文件局部的,大写标记 (A-Z) 是全局的,可跨文件跳转。

可视模式进阶

命令 功能
Ctrl-v 列选择 (块可视模式)
Ctrl-vI → 输入 → Esc 多行同时插入
Ctrl-v$A → 输入 → Esc 多行行尾追加
gv 重新选中上次的可视区域
o 可视模式下切换选区起止端
Ctrl-vg Ctrl-a 递增数字序列 (1,2,3...)

窗口与分屏

命令 功能
Ctrl-w v 垂直分屏
Ctrl-w s 水平分屏
Ctrl-w h/j/k/l 切换到左/下/上/右窗口
Ctrl-w = 均分窗口大小
Ctrl-w _ 最大化当前窗口高度
Ctrl-w | 最大化当前窗口宽度
Ctrl-w r 轮换窗口位置
Ctrl-w T 将当前窗口移到新标签页

命令行技巧

命令 功能
:!command 执行外部命令
:%!sort 用 sort 处理整个文件
:'<,'>!sort 用 sort 处理选中区域
:r !date 插入命令输出
:earlier 5m 回到 5 分钟前的状态
:later 5m 前进到 5 分钟后的状态
g Ctrl-g 显示光标位置/字数统计

搜索替换进阶

命令 功能
:%s/old/new/gc 全文替换(逐个确认)
* 搜索光标下的单词
# 反向搜索光标下的单词
gn 选中下一个搜索匹配
cgn 修改下一个匹配 → 然后 . 重复
:noh 清除搜索高亮

cgn + . 是最高效的多处替换方式: 先 * 搜索单词,cgn 修改第一个,然后 . 逐个替换,n 跳过。

其他实用内置功能

命令 功能
Ctrl-a / Ctrl-x 数字递增/递减
gf 打开光标下的文件路径
gx 用浏览器打开光标下的 URL
J 合并下一行到当前行
gJ 合并行 (不加空格)
g; / g, 跳转到上/下一个修改位置
Ctrl-o / Ctrl-i 跳转历史 后退/前进
zz / zt / zb 当前行居中/顶部/底部
za 切换折叠
= 自动缩进 (如 =ap 缩进段落, gg=G 缩进全文)
~ 切换大小写
gU{motion} / gu{motion} 转大写/小写 (如 gUiw)
Ctrl-r = 插入模式下计算表达式

常用命令

:Lazy              " 插件管理器 (安装/更新/清理)
:Mason             " LSP 服务器管理
:Telescope         " 搜索面板
:Trouble           " 诊断面板
:ConformInfo       " 查看格式化工具状态
:LspInfo           " 查看 LSP 状态
:checkhealth       " 健康检查 (排错必备)
:WhichKey          " 查看所有快捷键映射