一、简介
Neovim 是 Vim 的一个现代化分支,继承了 Vim 的高效编辑理念,同时提供了更好的插件支持、异步处理能力和更清晰的代码架构。本文基于 yandy/neovim-config 配置,介绍 Neovim 的安装和使用方法。
二、安装配置
1. 克隆配置文件
1
| git clone https://github.com/yandy/neovim-config.git ~/.config/nvim
|
2. 安装依赖工具(Arch Linux)
1
| sudo pacman -S neovim wl-clipboard luarocks lldb lazygit tree-sitter-grammars
|
依赖说明:
neovim: 编辑器本体
wl-clipboard: Wayland 下的剪贴板支持
luarocks: Lua 包管理器
lldb: 调试器
lazygit: TUI Git 客户端
tree-sitter-grammars: 语法高亮支持
3. 启动 Neovim
首次启动时会自动下载并安装所有插件:
三、基础操作
1. 模式切换
| 快捷键 |
作用 |
i |
在光标前进入插入模式 |
a |
在光标后进入插入模式 |
o |
在当前行下方新建一行并进入插入模式 |
v |
进入可视模式(字符选择) |
V |
进入可视模式(行选择) |
<C-q> |
进入块可视模式(列选择) |
2. 光标移动
| 快捷键 |
作用 |
h/j/k/l |
左/下/上/右移动 |
gg |
跳到文件开头 |
G |
跳到文件末尾 |
0 |
跳到行首 |
$ |
跳到行尾 |
^ |
跳到行首第一个非空字符 |
<C-f> / <C-b> |
向下/向上翻页 |
<C-d> / <C-u> |
向下/向上翻半页 |
e / b |
向前/向后跳一个单词 |
} / { |
向前/向后跳一个段落 |
]] / [[ |
向前/向后跳一个段落(section) |
3. 文本编辑
| 快捷键 |
作用 |
x |
删除光标下的字符 |
d |
删除(配合 motion 使用) |
dd |
删除当前行 |
c |
删除并进入插入模式 |
cc |
删除当前行并进入插入模式 |
r{char} |
替换光标下的字符为 {char} |
~ |
切换大小写 |
>> / << |
增加/减少缩进 |
gcc |
注释/取消注释当前行 |
{Visual}gc |
注释/取消注释选中的行 |
4. 复制粘贴
| 快捷键 |
作用 |
y |
复制(yank) |
yy |
复制当前行 |
p |
在光标后粘贴 |
P |
在光标前粘贴 |
:registers |
查看所有寄存器 |
5. 撤销重做
| 快捷键 |
作用 |
u |
撤销 |
<C-r> |
重做 |
. |
重复上次操作 |
6. 窗口操作
| 快捷键/命令 |
作用 |
:sp |
水平分割窗口 |
:vs |
垂直分割窗口 |
<C-w>h/j/k/l |
切换到左/下/上/右窗口 |
<C-w>w |
循环切换窗口 |
<C-w>+/- |
增加/减少窗口高度 |
<C-w></> |
增加/减少窗口宽度 |
:wq |
保存并退出 |
:q! |
不保存退出 |
:options |
打开选项窗口(查看和设置所有选项) |
7. 折叠操作
| 快捷键 |
作用 |
zR |
展开所有折叠 |
zM |
关闭所有折叠 |
za |
切换当前折叠状态 |
四、范围(Range)与替换
范围指定
范围由行说明符组成,用 , 或 ; 分隔:
| 符号 |
含义 |
{number} |
绝对行号 |
. |
当前行 |
$ |
文件最后一行 |
% |
整个文件(等同于 1,$) |
/{pattern}/ |
下一个匹配的行 |
?{pattern}? |
上一个匹配的行 |
示例:
1 2
| :4,/pattern/ :5;/pattern/
|
替换命令
1
| :[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
|
常用 flags:
g: 替换行内所有匹配(默认只替换第一个)
c: 每次替换前确认
y: 替换当前匹配
n: 跳过当前匹配
a: 替换所有剩余匹配
q: 退出替换
示例:
1 2
| :%s/old/new/g :%s/old/new/gc
|
五、插件快捷键
1. Buffer 管理
| 快捷键 |
作用 |
<leader>bn |
下一个 buffer |
<leader>bp |
上一个 buffer |
<leader>bc |
关闭其他所有 buffer |
<leader>bd |
关闭当前 buffer |
<leader> 默认为空格键
2. Snacks Picker(文件搜索)
| 快捷键 |
作用 |
<leader><space> |
智能查找 |
<leader>/ |
全局搜索(grep) |
<leader>ff |
查找文件 |
<leader>fb |
查找 buffer |
<leader>fr |
查找最近文件 |
<leader>fg |
查找 git 日志 |
<leader>fh |
查找帮助文档 |
<leader>fk |
查找快捷键 |
<leader>fc |
查找 nvim 配置 |
3. Snacks Explorer(文件浏览器)
| 快捷键 |
作用 |
<leader>e |
打开文件浏览器 |
r |
重命名文件 |
d |
删除文件 |
a |
新建文件/目录(目录以 / 结尾) |
<CR> / l |
打开文件/展开目录 |
m |
移动选中的文件 |
c |
复制选中的文件 |
h |
关闭目录 |
Z |
关闭所有目录 |
u |
刷新文件树 |
<A-h> |
切换隐藏文件显示 |
<A-i> |
切换忽略文件显示 |
4. LSP(语言服务器)
| 快捷键 |
作用 |
gd |
跳转到定义 |
gr |
查看引用 |
gi |
跳转到实现 |
gy |
跳转到类型定义 |
<leader>ls |
列出当前 buffer 的符号 |
<leader>lS |
列出工作区符号 |
<leader>ld |
当前文档诊断信息 |
<leader>lD |
工作区诊断信息 |
<leader>th |
切换 inlay hints |
<A-S-f> |
格式化当前 buffer |
5. 代码补全(blink.cmp)
| 快捷键 |
作用 |
<C-n> |
选择下一个 |
<C-p> |
选择上一个 |
<Tab> / <C-y> |
确认选择 |
<C-e> |
取消/隐藏补全 |
<C-f> |
向下滚动文档 |
<C-b> |
向上滚动文档 |
6. 终端与工具
| 快捷键 |
作用 |
<C->` |
打开浮动终端 |
<leader>G |
打开 LazyGit |
<leader>mp |
切换 Markdown 预览 |
<leader>ms |
分屏 Markdown 预览 |
7. Opencode(AI 助手)
| 快捷键 |
作用 |
<C-.> |
打开/关闭 Opencode 终端 |
<leader>oa |
打开询问窗口(引用当前 buffer:@buffer) |
{Visual}<leader>oa |
打开询问窗口(引用选中的文本:@this) |
{Visual}<leader>ox |
执行 Opencode 动作 |
<A-C-f>(终端内) |
向下滚动页面 |
<A-C-b>(终端内) |
向上滚动页面 |
8. 调试(DAP)
| 快捷键 |
作用 |
<leader>db / <F9> |
切换断点 |
<leader>dD / <S-F9> |
清除所有断点 |
<leader>ds / <F5> |
开始/继续调试 |
<leader>do / <F10> |
单步跳过 |
<leader>di / <F11> |
单步进入 |
<leader>dO / <S-F11> |
单步退出 |
<leader>dQ / <S-F5> |
终止调试 |
<leader>dB |
设置条件断点 |
<leader>du |
切换 DAP UI |
支持语言: Python、C/C++、JavaScript、TypeScript
六、高级技巧
1. 可视块模式批量编辑
进入块可视模式(<C-q>)后:
I{string}<ESC>: 在块内每行行首插入 {string}
A{string}<ESC>: 在块内每行行尾追加 {string}
2. 标记(Mark)
| 快捷键 |
作用 |
m{a-z} |
在当前文件设置标记 |
m{A-Z} |
在全局设置标记 |
'{mark} |
跳转到标记行 |
g'{mark} |
跳转到标记位置(不修改跳转列表) |
<C-o> |
跳转到旧的位置 |
<C-i> |
跳转到新的位置 |
<C-]> |
在帮助文档中跟随链接 |
3. 全局命令
1
| :[range]g[lobal]/{pattern}/[cmd]
|
对匹配 {pattern} 的行执行 [cmd] 命令。
七、配置结构
配置文件位于 ~/.config/nvim/,主要结构如下:
1 2 3 4 5 6
| ~/.config/nvim/ ├── init.lua # 入口文件 ├── lua/ # Lua 配置模块 │ ├── plugins/ # 插件配置 │ └── ... └── ...
|
八、总结
Neovim 是一个功能强大的编辑器,配合合理的配置可以大幅提升开发效率。建议新手:
- 先掌握基础:模式切换、光标移动、基本编辑
- 逐步学习插件:不要一次性安装太多插件
- 坚持练习:Vim 的学习曲线较陡,但熟练后会爱不释手
更多帮助请使用 :help 查看内置文档。