LazyVim 让我删掉了以前的 config
categories: 技术 tags: 应用程序LazyVim 让我删掉了以前的 config
还记得前几年那段疯狂迷恋 Vim/Neovim 的岁月吗?那时候的我就像发现了新大陆一样,对着这两个编辑器废寝忘食,就跟玩游戏一样。
当然,总有一些"理性派"朋友会说:“编辑器不就是个工具嘛,你折腾这些有啥用?“但我想说,这个世界每个人都有自己的小乐趣。你觉得无聊的事情,在别人眼里可能就是快乐源泉。你说他折腾编辑器没意义,难道玩游戏钓鱼就有所谓的“意义”了吗。不过,我也不赞成花费太多时间在配置编辑器上,顺手好用就行了。
进入社畜生活后,折腾编辑器的激情逐渐被工作消磨(现在更多的是在体验各种 AI 编辑器,虽然我写代码的频率也不高)。但是我心里依然对那些 Neovim 的开发者和 Vim 大神们保持着满满的敬意。
最近工作上碰到了一个棘手问题:需要通过好几层 SSH 跳板才能连到目标服务器。这时候 VSCode 的多服务器 SSH 就显得有点力不从心了,那个加载速度简直让人抓狂。于是我想起了我的老朋友 Neovim。
但说实话,现在的我已经没有当年那种从零开始配置的狂热了。幸好,江湖上早就流传着 LazyVim 这个神器,听说它能让 Lazier 也能拥有一套完美的 Neovim 配置。
LazyVim 安装大作战
再见 ~/.config/nvim
官网贴心地建议我们备份旧配置文件,但我看了看自己那几行可怜的配置,心想:算了,直接删了吧,反正也没什么值得留恋的!
rm -rf ~/{.config,.cache}/nvim ~/.local/{share,state}/nvim
Hello LazyVim
在开始之前,记得先解决网络问题,然后开始安装这个传说中的神器:
git clone https://github.com/LazyVim/starter ~/.config/nvim
# 删除 .git 文件夹,无所谓
# 建议留着以对比配置文件
rm -rf ~/.config/nvim/.git
安装自带插件
直接输入 nvim 启动 Neovim,然后就可以坐下来喝杯茶了!LazyVim 的插件系统会像勤劳的小蜜蜂一样,自动帮你安装各种必要的插件。当然,这一步同样需要稳定的网络环境。
开始 LazyVim
配置文件
所有的配置文件都在这个目录里:~/.config/nvim/
❯ tree
.
├── init.lua
├── lazy-lock.json
├── lazyvim.json
├── LICENSE
├── lua
│ ├── config
│ │ ├── autocmds.lua
│ │ ├── keymaps.lua
│ │ ├── lazy.lua
│ │ └── options.lua
│ └── plugins
│ └── example.lua
├── README.md
└── stylua.toml
4 directories, 11 files
init.lua:这是整个配置的入口文件,一般情况下我们不需要碰它。
lua/config/options.lua:这里存放着各种 Vim 的个性化设置,比如换行、缩进这些影响编码体验的细节。
我直接把过去的配置迁移过来就行了……我刚刚是不是删掉了什么?
-- Options are automatically loaded before lazy.nvim startup
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
-- Add any additional options here
---------------------------------------------------------------
-- ~/.config/nvim/init.lua —— 最小可行且舒服
---------------------------------------------------------------
-- 0. 判断系统 & 默认 shell
local is_win = vim.fn.has("win32") == 1 or vim.fn.has("win64") == 1
if is_win then
vim.opt.shell = "powershell"
vim.opt.shellcmdflag = "-NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command"
end
-- 1. 外观
vim.opt.number = true -- 绝对行号
vim.opt.relativenumber = false -- 绝对行号
vim.opt.showmatch = true -- 括号匹配
vim.opt.matchtime = 5 -- 0.5 s
vim.opt.wrap = true -- 长行自动换行
-- vim.opt.list = true -- 显示空格
-- vim.opt.listchars = { space = "." }
-- 2. 输入体验
vim.g.mapleader = " "
vim.opt.mouse = "a"
vim.opt.clipboard = "unnamedplus" -- 默认系统剪贴板
-- 3. 缩进
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true -- 用 4 空格而不是tab
vim.opt.smartindent = true -- 智能缩进
vim.opt.autoindent = true
-- 4. 搜索 / 修改
vim.opt.hlsearch = true -- 搜索时高亮显示被找到的文本
vim.opt.incsearch = true -- 输入搜索内容时就显示搜索结果
vim.opt.ignorecase = true -- 搜索时忽略大小写
vim.opt.smartcase = true -- 但在有大写字母时仍保持对大小写敏感
-- 5. 缓冲区、撤销
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.writebackup = false
vim.opt.history = 100 -- undo 100 次
vim.opt.updatetime = 100 -- 提升 LSP/gitsigns 响应
lua/config 目录:这里还可以定义各种快捷键和自动命令。如果你不是重度自定义用户,只需要调整 options.lua 就够了。不过我建议你还是打开其他文件看看,了解一下 LazyVim 是如何设计快捷键的。
插件
所有的插件配置都放在 lua/plugins 目录下,里面已经有一个 example.lua 示例文件。
以 twilight.nvim 插件为例,看看如何优雅地添加一个新插件。在 lua/plugins 中创建 twilight.lua 文件,然后添加这些内容:
-- 一定要加 return ,否则插件无法加载
return {
"folke/twilight.nvim",
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
}
保存文件后,重新打开 Neovim,或者使用 :Lazy sync 命令,LazyVim 就会像魔法师一样自动帮你安装好新插件。
LSP 语言服务器
LazyVim 内置了 Mason LSP 管理器,你不用为配置各种语言服务器而头疼了。

:Mason:图形界面
:MasonInstall XXX:命令安装指定插件
常用的就这两个命令。使用前记得确保网络通畅。
Lua 环境配置
在 Mason 界面中,可以用 Ctrl+F 搜索你想要的语言服务器,找到后按 i 键就能安装:

也可以通过命令行直接安装
:MasonInstall lua-language-server
Python 环境

:MasonInstall pyright
现在很多小伙伴都爱用 uv 包管理器,俺也一样。在用 Neovim 写 Python 代码之前,需要先激活你的虚拟环境, source .venv/bin/activate,这样 LSP 才能准确地理解你的项目依赖。
C/C++ 环境
说到 C/C++ 的语言服务器,除了 clangd,其他的我看都不会看一眼,so:
:MasonInstall clangd
当然也可以搜索安装,安装之后,效果如下:

顺带啰嗦一句,如果你的项目使用 CMake,记得在配置时加上 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 参数,这样才会生成 compile_commands.json 文件,clangd 才能完美理解你的项目结构。
收官
经过这番折腾,我的 LazyVim 配置基本就完成了。整个过程并没有想象中那么复杂,改动适中,工作量大概相当于在 VSCode 里安装几个 LSP 插件的水平。
最让我满意的是,当面对那些需要多层 SSH 跳转的服务器环境时,Vim/Neovim 的速度优势就完全显现出来了。
所以,如果你也是一个 Neovim 爱好者,或者正在为多服务器开发环境而烦恼,不妨试试 LazyVim。它能让你在最短的时间内拥有一个功能完整、颜值在线的编辑器环境。