跳至主要內容

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 操作方式,而不是花幾週時間調配置。建議從預設配置開始,在實際使用中逐步調整,而不是一開始就大量修改。

分享這篇文章