Vim / Neovim 完全指南 / 02 - 安装与配置
“The best editor is the one you have configured yourself.”
2.1 安装 Vim
2.1.1 各平台安装
Linux:
# Ubuntu / Debian
sudo apt update && sudo apt install vim
# Fedora
sudo dnf install vim-enhanced
# Arch Linux
sudo pacman -S vim
# 从源码编译(获取最新版本)
git clone https://github.com/vim/vim.git
cd vim
./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-python3interp=yes \
--enable-luainterp=yes \
--enable-gui=no \
--prefix=/usr/local
make -j$(nproc) && sudo make install
macOS:
# 系统自带的 Vim 版本较老,建议用 Homebrew
brew install vim
# 查看版本
vim --version | head -5
Windows:
# 方式一:scoop
scoop install vim
# 方式二:chocolatey
choco install vim
# 方式三:下载安装包
# https://www.vim.org/download.php
2.1.2 验证安装
# 检查版本
vim --version
# 查看是否支持特定特性
vim --version | grep -E "(\+lua|\+python3|\+ruby)"
2.2 安装 Neovim
2.2.1 各平台安装
Linux:
# Ubuntu PPA(获取最新版)
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update && sudo apt install neovim
# AppImage(通用)
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage
chmod u+x nvim-linux-x86_64.appimage
sudo mv nvim-linux-x86_64.appimage /usr/local/bin/nvim
# Snap
sudo snap install nvim --classic
# 从源码编译
git clone https://github.com/neovim/neovim.git
cd neovim
make CMAKE_BUILD_TYPE=Release -j$(nproc)
sudo make install
macOS:
# Homebrew
brew install neovim
# HEAD 版本(开发版)
brew install --HEAD neovim
Windows:
# scoop
scoop install neovim
# chocolatey
choco install neovim
# MSI 安装包
# https://github.com/neovim/neovim/releases
2.2.2 验证安装
nvim --version
# NVIM v0.10.x
# Build type: Release
# LuaJIT 2.1.x
2.3 配置文件路径
2.3.1 Vim 配置路径
| 系统 | 路径 |
|---|---|
| Linux/macOS | ~/.vimrc |
| Windows | $HOME/_vimrc |
| 通用 | ~/.vim/vimrc |
2.3.2 Neovim 配置路径
| 系统 | 路径 |
|---|---|
| Linux/macOS | ~/.config/nvim/init.lua 或 ~/.config/nvim/init.vim |
| Windows | $LOCALAPPDATA/nvim/init.lua |
~/.config/nvim/
├── init.lua # 入口文件
├── lua/
│ ├── config/
│ │ ├── options.lua # 选项配置
│ │ ├── keymaps.lua # 快捷键映射
│ │ └── autocmds.lua # 自动命令
│ └── plugins/
│ └── *.lua # 插件配置
└── plugin/ # 自动加载脚本
2.4 Neovim 基础配置
2.4.1 创建 init.lua
-- ~/.config/nvim/init.lua
-- Neovim 配置入口
-- 加载配置模块
require("config.options")
require("config.keymaps")
require("config.autocmds")
2.4.2 基本选项设置
-- ~/.config/nvim/lua/config/options.lua
local opt = vim.opt
-- 行号
opt.number = true -- 显示行号
opt.relativenumber = true -- 相对行号
-- 缩进
opt.tabstop = 4 -- Tab 宽度
opt.shiftwidth = 4 -- 缩进宽度
opt.expandtab = true -- 空格替代 Tab
opt.smartindent = true -- 智能缩进
-- 搜索
opt.ignorecase = true -- 忽略大小写
opt.smartcase = true -- 智能大小写
opt.hlsearch = true -- 高亮搜索结果
opt.incsearch = true -- 增量搜索
-- 外观
opt.termguicolors = true -- 真彩色
opt.signcolumn = "yes" -- 始终显示标记列
opt.cursorline = true -- 高亮当前行
opt.scrolloff = 8 -- 光标上下保留行数
opt.sidescrolloff = 8 -- 光标左右保留列数
opt.wrap = false -- 不自动换行
-- 文件
opt.swapfile = false -- 禁用交换文件
opt.backup = false -- 禁用备份
opt.undofile = true -- 持久化撤销历史
opt.encoding = "utf-8" -- 编码
opt.fileencoding = "utf-8" -- 文件编码
-- 补全
opt.completeopt = { "menu", "menuone", "noselect" }
opt.pumheight = 10 -- 补全菜单高度
-- 剪贴板
opt.clipboard = "unnamedplus" -- 共享系统剪贴板
-- 分割窗口
opt.splitbelow = true -- 水平分割在下方
opt.splitright = true -- 垂直分割在右方
-- 性能
opt.updatetime = 250 -- 更快的更新时间
opt.timeoutlen = 300 -- 按键超时时间
-- Leader 键
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
2.4.3 基本快捷键
-- ~/.config/nvim/lua/config/keymaps.lua
local map = vim.keymap.set
-- Normal 模式
map("n", "<leader>w", ":w<CR>", { desc = "保存文件" })
map("n", "<leader>q", ":q<CR>", { desc = "退出" })
map("n", "<Esc>", ":noh<CR>", { desc = "取消搜索高亮" })
-- 窗口导航
map("n", "<C-h>", "<C-w>h", { desc = "左侧窗口" })
map("n", "<C-j>", "<C-w>j", { desc = "下方窗口" })
map("n", "<C-k>", "<C-w>k", { desc = "上方窗口" })
map("n", "<C-l>", "<C-w>l", { desc = "右侧窗口" })
-- 调整窗口大小
map("n", "<C-Up>", ":resize -2<CR>", { desc = "缩小窗口高度" })
map("n", "<C-Down>", ":resize +2<CR>", { desc = "增大窗口高度" })
map("n", "<C-Left>", ":vertical resize -2<CR>", { desc = "缩小窗口宽度" })
map("n", "<C-Right>", ":vertical resize +2<CR>", { desc = "增大窗口宽度" })
-- 缓冲区切换
map("n", "<S-l>", ":bnext<CR>", { desc = "下一个缓冲区" })
map("n", "<S-h>", ":bprevious<CR>", { desc = "上一个缓冲区" })
-- 移动选中的行
map("v", "J", ":m '>+1<CR>gv=gv", { desc = "下移选中行" })
map("v", "K", ":m '<-2<CR>gv=gv", { desc = "上移选中行" })
-- 保持光标居中
map("n", "<C-d>", "<C-d>zz", { desc = "向下翻半页(光标居中)" })
map("n", "<C-u>", "<C-u>zz", { desc = "向上翻半页(光标居中)" })
map("n", "n", "nzzzv", { desc = "下一个搜索结果(光标居中)" })
map("n", "N", "Nzzzv", { desc = "上一个搜索结果(光标居中)" })
2.5 Neovim 发行版(Distribution)
对于初学者,使用预配置的发行版可以快速上手。
2.5.1 LazyVim
LazyVim 是目前最流行的 Neovim 发行版,由 folke 开发,基于 lazy.nvim 插件管理器。
安装:
# 备份现有配置
mv ~/.config/nvim ~/.config/nvim.bak
# 克隆 LazyVim starter
git clone https://github.com/LazyVim/starter ~/.config/nvim
# 移除 git 记录
rm -rf ~/.config/nvim/.git
# 启动
nvim
目录结构:
~/.config/nvim/
├── init.lua # LazyVim 入口
├── lua/
│ ├── config/
│ │ ├── autocmds.lua # 自动命令
│ │ ├── keymaps.lua # 快捷键
│ │ ├── lazy.lua # lazy.nvim 配置
│ │ └── options.lua # 选项
│ └── plugins/
│ ├── colorscheme.lua # 颜色主题
│ ├── editor.lua # 编辑器插件
│ ├── example.lua # 示例文件(可删)
│ └── ui.lua # UI 插件
└── stylua.toml # Lua 格式化配置
自定义插件:
-- ~/.config/nvim/lua/plugins/example.lua
return {
-- 添加 Telescope
{ "nvim-telescope/telescope.nvim" },
-- 禁用某个插件
{ "echasnovski/mini.pairs", enabled = false },
-- 修改插件配置
{ "nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"lua", "vim", "json", "python", "go",
},
},
},
}
2.5.2 AstroNvim
AstroNvim 以美学设计和结构化配置著称。
安装:
# 备份
mv ~/.config/nvim ~/.config/nvim.bak
# 克隆
git clone --depth 1 https://github.com/AstroNvim/AstroNvim ~/.config/nvim
# 启动
nvim
自定义配置:
-- ~/.config/nvim/lua/community.lua
return {
"AstroNvim/astrocommunity",
{ import = "astrocommunity.pack.lua" },
{ import = "astrocommunity.pack.python" },
{ import = "astrocommunity.pack.go" },
{ import = "astrocommunity.pack.rust" },
}
2.5.3 NvChad
NvChad 以速度和简洁著称,适合追求轻量的用户。
安装:
# 备份
mv ~/.config/nvim ~/.config/nvim.bak
# 克隆
git clone https://github.com/NvChad/starter ~/.config/nvim
# 启动
nvim
特点:
| 特性 | NvChad |
|---|---|
| 插件管理器 | lazy.nvim |
| 启动速度 | 极快 |
| UI 美观度 | ⭐⭐⭐⭐⭐ |
| 学习曲线 | 中等 |
| 定制难度 | 较低 |
2.5.4 发行版对比
| 发行版 | 适合人群 | 体积 | 启动时间 | 定制性 |
|---|---|---|---|---|
| LazyVim | 通用开发者 | 中 | ~50ms | 高 |
| AstroNvim | 追求美观 | 大 | ~80ms | 高 |
| NvChad | 追求速度 | 小 | ~30ms | 中 |
| 手动配置 | 高级用户 | 自定义 | 自定义 | 最高 |
2.6 终端配置
2.6.1 推荐终端模拟器
| 终端 | 平台 | GPU 加速 | 特点 |
|---|---|---|---|
| Kitty | Linux/macOS | ✅ | 快速、可配置 |
| WezTerm | 全平台 | ✅ | Lua 配置、多路复用 |
| Alacritty | 全平台 | ✅ | 极简、极快 |
| Ghostty | macOS/Linux | ✅ | Zig 编写、新锐 |
| Windows Terminal | Windows | ✅ | 微软官方 |
2.6.2 安装 Nerd Font
很多 Neovim 插件需要 Nerd Font 图标支持:
# 下载 JetBrainsMono Nerd Font
curl -LO https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz
tar -xf JetBrainsMono.tar.xz -C ~/.local/share/fonts/
fc-cache -fv
# 或使用安装脚本
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/install.sh)"
2.6.3 Kitty 配置示例
# ~/.config/kitty/kitty.conf
font_family JetBrainsMono Nerd Font
font_size 13.0
bold_font auto
italic_font auto
# 颜色
background #1e1e2e
foreground #cdd6f4
# 性能
repaint_delay 6
input_delay 1
2.7 常见安装问题
注意:以下问题在社区中非常常见,建议收藏备用。
问题一:Neovim 版本过旧
# 症状:许多插件要求 Neovim >= 0.9
# 解决:使用 PPA 或 AppImage
# 查看当前版本
nvim --version | head -1
问题二:剪贴板不工作
# 症状:"+y 无法复制到系统剪贴板
# Linux 需要安装 xclip 或 xsel
sudo apt install xclip # X11
sudo apt install wl-clipboard # Wayland
# macOS 通常开箱即用
# 验证
nvim --cmd "echo has('clipboard')"
问题三:Python 支持
# 安装 pynvim(Python 插件需要)
pip3 install pynvim
# 验证
nvim -c "echo has('python3')"
2.8 业务场景
| 场景 | 推荐方案 |
|---|---|
| 快速上手 | LazyVim 发行版 |
| 服务端编辑 | 系统 vim / nvim 裸配置 |
| 日常开发 | Neovim + 手动配置 或 LazyVim |
| 团队统一 | 自定义配置仓库 + 符号链接 |
| 演示/教学 | NvChad(外观美观) |
2.9 总结
| 任务 | 命令/路径 |
|---|---|
| 安装 Vim | sudo apt install vim / brew install vim |
| 安装 Neovim | sudo apt install neovim / brew install neovim |
| Vim 配置 | ~/.vimrc |
| Neovim 配置 | ~/.config/nvim/init.lua |
| LazyVim 安装 | git clone starter ~/.config/nvim |
| Nerd Font | 下载并安装到系统字体目录 |
下一步:第 03 章 - 基础操作 → 学习 Vim 的模态编辑、基本移动和帮助系统。