LazyVim 配置指南:打造高效的 Neovim 開發環境
LazyVim 配置指南:打造高效的 Neovim 開發環境
LazyVim 是目前最受歡迎的 Neovim 配置框架之一,由 folke(lazy.nvim 的作者)開發。它提供了一套開箱即用的 Neovim 設定,同時保留高度的客製化彈性。如果你想體驗接近 VS Code 的開發體驗,卻又不想放棄 Vim 的鍵盤操作效率,LazyVim 是絕佳的選擇。
為什麼選擇 LazyVim?
相比從頭配置 Neovim,LazyVim 的優勢:
- 開箱即用:安裝後立即有完整的 LSP、語法高亮、模糊搜尋等功能
- 效能優先:lazy.nvim 插件管理器確保插件按需載入,啟動極快
- 易於擴充:清晰的配置結構,覆寫預設值非常直覺
- 活躍維護:定期更新,跟上 Neovim 生態的最新發展
安裝前置條件
# macOS
brew install neovim
brew install git ripgrep fd lazygit
# 確認 Neovim 版本 >= 0.9
nvim --version
# 安裝 Nerd Font(用於圖示顯示)
brew tap homebrew/cask-fonts
brew install --cask font-jetbrains-mono-nerd-font安裝 LazyVim
# 備份現有配置
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
# 克隆 LazyVim 起始模板
git clone https://github.com/LazyVim/starter ~/.config/nvim
# 移除 .git 資料夾,讓它成為你自己的配置
rm -rf ~/.config/nvim/.git
# 啟動 Neovim,LazyVim 會自動安裝所有插件
nvim目錄結構
~/.config/nvim/
├── lua/
│ ├── config/
│ │ ├── autocmds.lua # 自動指令
│ │ ├── keymaps.lua # 快捷鍵
│ │ ├── lazy.lua # lazy.nvim 初始化
│ │ └── options.lua # Neovim 選項
│ └── plugins/ # 插件設定(你的客製化放這裡)
│ ├── example.lua
│ └── ...
├── init.lua # 入口點
└── lazyvim.json # LazyVim 版本鎖定基本操作
安裝完成後,以下是最常用的快捷鍵(前置鍵為 <Space>):
<Space>ff 模糊搜尋檔案
<Space>fg 全域搜尋文字(ripgrep)
<Space>fb 搜尋已開啟的 Buffer
<Space>e 開啟/關閉檔案總管 (Neo-tree)
<Space>gg 開啟 LazyGit
<Space>bd 關閉當前 Buffer
gd 跳到定義
gr 查看所有引用
K 顯示 hover 說明文件
<Space>ca Code Action
<Space>cr 重新命名符號
<Space>cf 格式化程式碼客製化選項
編輯 ~/.config/nvim/lua/config/options.lua:
-- options.lua
local opt = vim.opt
-- 顯示設定
opt.relativenumber = true -- 相對行號
opt.scrolloff = 8 -- 捲動時保持 8 行邊距
opt.colorcolumn = "100" -- 顯示 100 字元寬度提示線
-- 縮排
opt.tabstop = 2
opt.shiftwidth = 2
opt.expandtab = true
-- 搜尋
opt.ignorecase = true
opt.smartcase = true新增插件
在 ~/.config/nvim/lua/plugins/ 建立新的 .lua 檔案:
-- lua/plugins/extras.lua
return {
-- 彩虹括號
{
"HiPhish/rainbow-delimiters.nvim",
event = "BufReadPost",
},
-- 自動關閉/重新命名 HTML 標籤
{
"windwp/nvim-ts-autotag",
opts = {},
},
-- 顯示 git blame 資訊
{
"f-person/git-blame.nvim",
event = "BufReadPost",
opts = {
enabled = true,
message_template = " <author> • <date> • <summary>",
date_format = "%Y-%m-%d",
},
},
}覆寫現有插件配置
-- lua/plugins/treesitter.lua
return {
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"lua", "vim", "vimdoc",
"javascript", "typescript", "tsx",
"vue", "html", "css",
"python", "go", "rust",
"json", "yaml", "toml", "markdown",
},
},
},
}設定 LSP
LazyVim 使用 mason.nvim 管理 LSP 伺服器:
-- lua/plugins/lsp.lua
return {
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
-- LSP
"typescript-language-server",
"vue-language-server",
"pyright",
"gopls",
-- Linter
"eslint_d",
"flake8",
-- Formatter
"prettier",
"black",
"gofumpt",
},
},
},
}設定 Vue 3 開發環境
-- lua/plugins/vue.lua
return {
{
"neovim/nvim-lspconfig",
opts = {
servers = {
volar = {
filetypes = { "typescript", "javascript", "javascriptreact",
"typescriptreact", "vue" },
},
},
},
},
-- 新增 Vue 格式化支援
{
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
vue = { "prettier" },
typescript = { "prettier" },
javascript = { "prettier" },
},
},
},
}自訂快捷鍵
-- lua/config/keymaps.lua
local map = vim.keymap.set
-- 快速儲存
map("n", "<C-s>", "<cmd>w<cr>", { desc = "儲存檔案" })
-- 分割視窗
map("n", "<leader>sv", "<C-w>v", { desc = "垂直分割" })
map("n", "<leader>sh", "<C-w>s", { desc = "水平分割" })
-- Buffer 切換
map("n", "<S-h>", "<cmd>bprevious<cr>", { desc = "上一個 Buffer" })
map("n", "<S-l>", "<cmd>bnext<cr>", { desc = "下一個 Buffer" })
-- 取消搜尋高亮
map("n", "<Esc>", "<cmd>nohlsearch<cr>")效能調校
-- lua/config/options.lua
-- 減少不必要的更新頻率
vim.opt.updatetime = 200
-- 停用不需要的內建插件以加速啟動
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1常見問題排除
圖示顯示亂碼:確認終端機使用 Nerd Font,如 JetBrains Mono Nerd Font。
LSP 沒有自動補全:執行 :Mason 確認語言伺服器已安裝,執行 :LspInfo 確認 LSP 已正常啟動。
插件安裝失敗:確認 git 可正常存取 GitHub,可能需要設定代理。
總結
LazyVim 大幅降低了進入 Neovim 世界的門檻。它把社群多年的最佳實踐整合成一套開箱即用的配置,讓你能把精力放在真正重要的事上:學習 Vim 操作方式,而不是花幾週時間調配置。建議從預設配置開始,在實際使用中逐步調整,而不是一開始就大量修改。
分享這篇文章