Appearance
Neovim
更新: 1/5/2026 字数: 0 字 时长: 0 分钟
前置
你得有有个好看的终端模拟器吧,然后你得会科学上网吧,再然后,你需要有一个支持图标的字体。使用命令行安装字体是一个很方便的做法。
字体安利:
- CaskaydiaCove Nerd Font
- FiraCode Nerd Font
- JetBrains Mono Nerd Font
其次你的电脑里需要有一个 C 编译器,Ripgrep(rg) 和 Fd(fd)。
安装示例:
- Ripgrep:
winget install BurntSushi.ripgrep.MSVC - Fd:
winget install sharkdp.fd
安装
从 Neovim 官网安装,里面有各个系统的安装方法。
ex:
powershell
winget install Neovim.Neovimbash
brew install neovimbash
sudo pacman -S neovimLazyVim 安装
LazyVim 是目前最流行的 Neovim 配置方案,特点是开箱即用。它把基础功能——代码补全、文件树、语法高亮、Git 集成全都配置好了,甚至还有键位提示,对新手友好。
安装方法参考官网,也是通过命令行,非常简单。
问题:输入 nvim 卡在安装的界面,显示 Task(3/33) 或 Task(0/30)
检查一下 Working 是不是显示一个比较大的数字(ex:30),如果是的话,应该是因为同时下载大量插件导致通道阻塞。
解决方法:修改配置文件(~\AppData\Local\nvim\lua\config\lazy.lua),在 require("lazy").setup{} 中添加一行代码以限制同时下载插件的数量:
lua
require("lazy").setup({
concurrency = 1
spec = {
-- ...
},
-- ...
})再回到 Neovim 中,应该就可以重新下载了。之后你可以考虑再将 concurrency 的数值调大一些,比如 4,以加快下载速度。
问题:假下载
进入 Neovim 后,有的插件报错。有可能是 Git 因为代理问题,虽然提示下载成功,但实际上下载回来的是一些空的文件夹,或者是包含了 HTML 报错代码的文本文件,而不是真正的 Lua 代码。你需要去对应的文件目录检查(~\AppData\Local\nvim-data\lazy)。如果目录里空或只有 .git 文件夹,则表示下载错误,你可以直接手动删除,下次进入 Neovim 时会重新下载。
问题:Mason 插件报错
输入 :Mason 进入图形化界面,如果发现部分包报错,可以回到命令行,使用 npm install -g <package-name> 手动安装对应的包。
简单的命令
在 LazyVim 里,Normal 模式按下
Space键会弹出一个命令面板,会弹出一个菜单,列举出功能的快捷键。
非常好的互动式教学,也是我第一个完整看完的英文教程:OpenVim
- 模式切换
i:进入 Insert 模式Esc:进入 Normal 模式
由于 Esc 按起来很不方便,推荐改建,前往 ~\AppData\Local\nvim\lua\config\keymaps.lua,添加以下代码:
lua
-- 插入模式下,按 jk 快速退出
vim.keymap.set("i", "jk", "<Esc>")
-- 或者:插入模式下,按下 CapsLock 键退出插入模式
vim.keymap.set("i", "<CapsLock>", "<Esc>")- 简单移动
- 基础移动
h:左移j:下移k:上移l:右移
- 快速跳转:
f + [任意字符]跳转到下一个该字符的出现处 - 括号:
%在两个括号间跳转。 - 同个单词间:
#前*后 - 搜索单词
/ + [单词]n/N:根据你的上个搜索结果,往后/往前跳转到这个单词。
- 半页
Ctrl + d:下移半页Ctrl + u:上移半页
- 全页
gg:文件顶部G:文件底部[数字] + G/:[数字]:指定行
- 行
0:行首$:行尾^:此行有内容的头部I:此行内容的头部:同时进入 insert 模式A:行尾,同时进入 insert 模式
- 段落
{:移动到上一个段落开头}:移动到下一个段落开头
- 单词
w:移动到下一个单词开头b:移动到上一个单词开头e:移动到当前/下一个单词结尾
- 基础移动
TIP
vim 的大部操作前面都可以加数字,以表示多次重复。 ex:3fq 跳转到从此处开始,q 第三次出现的地方。
- 保存与退出——需要在 Normal 模式。
| 效果 | 命令 |
|---|---|
| 保存 | :w |
| 退出 | :q |
| 保存并退出 | :wq |
| 强制退出不保存 | :q! |
文件树操作
- 打开/关闭文件树:
Space + e - 切换焦点:先按
Ctrl + w,再按hjkl切换焦点 - 文件操作
- 移动:用
j和k上下移动 - 打开和展开:
l和Enter - 收起:
h - 新建文件/删除:
a/d,对应 add 和 delete
- 移动:用
- 打开/关闭文件树:
在多个文件间(缓冲区)切换
Shift + h/l:切换到左边/右边的文件[/]+b:上/下一个 BufferSpace + b + d:关闭当前 Buffer
Flash.nvim
Flash.nvim 的功能很像 Ace Jump,可以快速跳转到某个字符处。
单词跳转:
s然后输入你想跳转的字符,屏幕上会显示该字符所在位置的快捷键,按下对应的快捷键即可跳转。
代码块跳转:
S搜素高亮选区,会自动把整个函数、整个 if 块、整个类圈出来给你选。
远程制导:
d + s直接远程删掉一个单词。
搜索
- 当前文件
- 向下搜:
/ - 向上搜:
? - 前进/后退:
n/N
- 向下搜:
- 找文件:
Ctrl + Shift + N(Windows) /Cmd + Shift + O(Mac)Space+f+f(LazyVimk)
- 最近用过的文件:
Ctrl + E - 基于整个项目寻找代码
Space+/(LazyVim)Space+s+g(Standard)
编辑
基础操作:
- 插入新行
- 下方:
o - 上方:
O
- 下方:
- 替换字母:
r - 全局替换:
- 基础命令:
:%s/旧文本/新文本——替换当前行中的文本 - 基础命令 +
/g:当前文件全局替换 - 基础命令 +
/gc:当前文件全局替换,但每次替换前需确认 行数1,行数2+ 全局替换:指定行数替换#可以替换命令中的/
- 基础命令:
- 删除
x/X:光标下一个/上一个字符(类似 Delete 键)d是删除指令的前缀(实际剪切),可以和一个移动指令结合:dd:整行dw:一个单词D:从光标位置到行尾的所有内容
- 复制粘贴
y:复制选中的内容 (Yank)yy:复制当前行p:在光标前粘贴P:在光标后粘贴
- 撤销
u:撤销 (Undo)Ctrl + r:重做 (Redo)U:还原你光标进入此行后做的修改
- 重复上个修改指令:
.
TIP
d 的前或后可加上数字。 此外重复操作 . 其实很好用。
更 pro 操作:
- 格式化:
Space + c + f - 注释
gcc:注释当前行gc + j:注释当前行和下面一行- 选中几行按
gc:注释选中的代码块
- 快速修改
cw:从光标处开始,改到单词结束ci":修改引号里的内容 (Change Inner Quotes)ci:修改括号里的内容 (Change Inner Parentheses)ciw:修改单词 (Change Inner Word)C:修改光标到结尾的内容
一般来说,在 insert 模式下,你不可能为了每次为了创建新行都回到 normal 模式,除了 Enter 键,另一种方式是在插入模式下的 Ctrl + o,它会临时切换成 normal 模式,在接受完你的一个指令后变回 insert 模式,因此在 insert 模式下 插入新行可以变成 Ctrl + o + o。如果你在 normal 模式 Ctrl + o 会变成回退到上一个光标位置。
TIP
插入也是允许重复的的,具体为:在进入 Insert 模式前,先按下一个数字(ex: 3),再在 Insert 模式输入(go),退出 Insert 模式时会输入的内容就会被多次复制(ex:gogogo)。通过按下 o 等操作进入 Insert 模式时同样适用。
Visual Mode
可以在可视模式里选择一段文本,然后对其进行操作,比如复制、删除、注释等。
进入可视模式 (Visual Mode):
v:按字符选择(像鼠标拖动)V:按行选择(最常用)Ctrl + v/q:矩形选中
在可视模式下,按 d 可以直接选中的内容,U 会将其变为大写。