Neovim 的配置是 dotfile 裡最複雜的單一工具——plugin 生態龐大、整個配置系統基於 Lua。Lua 語法基礎見 Lua 腳本語言

配置路徑:~/.config/nvim/

配置結構

 1~/.config/nvim/
 2├── init.lua              # 入口,source 其他模組
 3├── lua/
 4│   ├── options.lua       # 基本設定(行號、tab 寬度、搜尋行為)
 5│   ├── keymaps.lua       # 快捷鍵
 6│   ├── autocmds.lua      # 自動指令
 7│   └── plugins/          # 各 plugin 的配置
 8│       ├── init.lua      # plugin manager 載入
 9│       ├── lsp.lua       # LSP 設定
10│       ├── telescope.lua # fuzzy finder
11│       ├── treesitter.lua
12│       └── ...
13└── lazy-lock.json        # lazy.nvim 的 lockfile(要進 Git)

是否該用預設配置包

LazyVim、NvChad、AstroNvim 這類預設配置包提供了一整套開箱即用的 neovim 設定。判讀:

  • 用預設配置包:想要快速可用的 IDE-like 體驗、不想花時間逐一選 plugin 和配置。Dotfile 裡放的是「對預設的覆寫」
  • 自己從零組:想完全理解每一個 plugin 做什麼、容忍前期投入時間。Dotfile 裡放的是完整配置

兩種都是 dotfile 管理的合法對象。差異在出問題時的除錯路徑:自己組的知道每一行做什麼,預設配置包的要先理解它的分層才能改。

Dotfile 結構對應

 1~/dotfiles/
 2├── alacritty/
 3│   └── .config/
 4│       └── alacritty/
 5│           └── alacritty.toml
 6├── tmux/
 7│   └── .config/
 8│       └── tmux/
 9│           └── tmux.conf
10├── nvim/
11│   └── .config/
12│       └── nvim/
13│           ├── init.lua
14│           ├── lazy-lock.json
15│           └── lua/
16│               └── ...
17└── zellij/                    # 如果用 zellij
18    └── .config/
19        └── zellij/
20            └── config.kdl

每個工具是獨立的 stow package,可以在不同機器選擇性安裝。例如伺服器只 stow tmux nvim、桌面機才加 stow alacritty