LazyVim 开箱即用¶
为什么要学 LazyVim¶
LazyVim 是 Neovim 的一个预配置框架,由 lazy.nvim 插件管理器的作者 folke 打造。它提供了经过精心调校的开箱即用体验,同时保持完全可定制性。对于不想从零配置 Neovim 但又想要一个专业级开发环境的用户来说,LazyVim 是最佳起点——它预装了 LSP、补全、搜索、Git、调试等必备功能,你只需要关注个性化定制。
核心概念¶
| 概念 | 白话解释 | 用途 |
|---|---|---|
| Extras | 可选功能包 | 按需启用语言支持和特性 |
| Keymaps | 统一快捷键 | 一致且可记忆的键位设计 |
| Which-key | 按键提示 | 按 Leader 键后显示可用操作 |
| Lazy Loading | 延迟加载 | 只在需要时加载插件 |
| Override | 覆盖配置 | 在不修改源码的情况下定制 |
| Dashboard | 启动面板 | 快速访问最近项目和功能 |
安装配置¶
前置要求¶
# Neovim >= 0.9.0
nvim --version
# 必需工具
# git, ripgrep, fd, lazygit (可选), node (用于部分 LSP)
sudo apt install ripgrep fd-find
# Nerd Font(图标显示)
# 从 https://www.nerdfonts.com/ 下载安装
安装¶
# 备份旧配置
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
# 克隆 LazyVim starter
git clone https://github.com/LazyVim/starter ~/.config/nvim
# 删除 .git(变成你自己的配置)
rm -rf ~/.config/nvim/.git
# 启动 Neovim(自动安装插件)
nvim
目录结构¶
~/.config/nvim/
├── init.lua # 入口(不要修改)
├── lazyvim.json # extras 配置
├── lua/
│ ├── config/
│ │ ├── autocmds.lua # 自定义自动命令
│ │ ├── keymaps.lua # 自定义快捷键
│ │ ├── lazy.lua # lazy.nvim 配置(不要修改)
│ │ └── options.lua # 自定义选项
│ └── plugins/
│ ├── example.lua # 你的插件配置放这里
│ └── ...
快速上手¶
核心快捷键¶
Leader 键 = 空格
文件:
<leader>ff 查找文件
<leader>fr 最近文件
<leader>fg 全局搜索(grep)
<leader>e 文件浏览器
<leader>E 文件浏览器(cwd)
缓冲区:
<leader>bb 切换缓冲区
<leader>bd 关闭缓冲区
H/L 前/后缓冲区
代码:
gd 跳转定义
gr 查看引用
K 悬浮文档
<leader>cr 重命名
<leader>ca 代码操作
<leader>cf 格式化
搜索替换:
<leader>sr 搜索替换(Spectre)
Git:
<leader>gg 打开 LazyGit
<leader>gs Git 状态
终端:
<C-/> 打开终端
启用 Extras¶
按 <leader> 然后输入 :LazyExtras 查看和启用可用的功能包:
常用 Extras:
lang.python Python 支持(pyright + ruff)
lang.typescript TypeScript 支持
lang.rust Rust 支持
lang.go Go 支持
lang.java Java 支持
lang.json JSON 支持
lang.yaml YAML 支持
lang.markdown Markdown 预览
lang.docker Docker 支持
coding.copilot GitHub Copilot
coding.codeium Codeium AI 补全
editor.mini-files 迷你文件浏览器
test.core 测试运行器
dap.core 调试器
自定义选项¶
-- lua/config/options.lua
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.relativenumber = true
vim.opt.scrolloff = 10
vim.opt.wrap = true
进阶用法¶
添加插件¶
-- lua/plugins/my-plugins.lua
return {
-- 添加新插件
{
"folke/zen-mode.nvim",
keys = { { "<leader>z", "<cmd>ZenMode<cr>", desc = "Zen Mode" } },
opts = { window = { width = 90 } },
},
-- 修改已有插件配置
{
"nvim-neo-tree/neo-tree.nvim",
opts = {
filesystem = {
filtered_items = {
visible = true, -- 显示隐藏文件
},
},
},
},
-- 禁用内置插件
{ "folke/flash.nvim", enabled = false },
}
自定义快捷键¶
-- lua/config/keymaps.lua
local map = vim.keymap.set
-- 自定义快捷键
map("n", "<leader>ww", "<cmd>w<cr>", { desc = "保存文件" })
map("n", "J", "mzJ`z", { desc = "合并行(保持光标位置)" })
map("v", "J", ":m '>+1<CR>gv=gv", { desc = "下移选中行" })
map("v", "K", ":m '<-2<CR>gv=gv", { desc = "上移选中行" })
-- 删除默认快捷键
vim.keymap.del("n", "<leader>l")
自定义 LSP¶
-- lua/plugins/lsp.lua
return {
{
"neovim/nvim-lspconfig",
opts = {
servers = {
pyright = {
settings = {
python = {
analysis = {
typeCheckingMode = "basic",
autoImportCompletions = true,
},
},
},
},
-- 添加新的 LSP
clangd = {},
gopls = {
settings = {
gopls = {
analyses = { unusedparams = true },
staticcheck = true,
},
},
},
},
},
},
}
自定义主题¶
-- lua/plugins/colorscheme.lua
return {
{
"catppuccin/nvim",
name = "catppuccin",
opts = {
flavour = "mocha",
transparent_background = true,
integrations = {
cmp = true,
gitsigns = true,
treesitter = true,
telescope = { enabled = true },
neo_tree = true,
which_key = true,
},
},
},
-- 设为默认主题
{
"LazyVim/LazyVim",
opts = { colorscheme = "catppuccin" },
},
}
调试配置¶
-- 启用 dap extra 后
-- lua/plugins/dap.lua
return {
{
"mfussenegger/nvim-dap",
config = function()
local dap = require("dap")
-- Python 调试
dap.configurations.python = {
{
type = "python",
request = "launch",
name = "Launch file",
program = "${file}",
pythonPath = function()
return "/usr/bin/python3"
end,
},
}
end,
},
}
-- 调试快捷键:
-- <leader>db 切换断点
-- <leader>dc 继续执行
-- <leader>di 步入
-- <leader>do 步出
-- <leader>dt 终止
常见问题¶
Q: 启动速度慢?¶
- 运行
:Lazy profile查看插件加载时间 - 确保插件使用了延迟加载
- 禁用不需要的 extras
Q: 如何更新?¶
对于 LazyVim 框架本身的更新,它作为一个插件也会被:Lazy update 更新。Q: 自定义配置不生效?¶
- 确保文件在正确位置(
lua/plugins/或lua/config/) - LazyVim 的配置通过
opts合并,不是覆盖 - 使用
:Lazy debug排查问题
Q: 与 NvChad/AstroNvim 相比?¶
- LazyVim:最活跃、配置最合理、扩展性最好
- NvChad:界面美观、适合前端开发
- AstroNvim:功能全面但配置稍复杂
参考资源¶
- 官网:https://www.lazyvim.org/
- GitHub:https://github.com/LazyVim/LazyVim
- Starter:https://github.com/LazyVim/starter
- 按键映射参考:https://www.lazyvim.org/keymaps
- Extras 列表:https://www.lazyvim.org/extras