强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

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 加速特点
KittyLinux/macOS快速、可配置
WezTerm全平台Lua 配置、多路复用
Alacritty全平台极简、极快
GhosttymacOS/LinuxZig 编写、新锐
Windows TerminalWindows微软官方

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 总结

任务命令/路径
安装 Vimsudo apt install vim / brew install vim
安装 Neovimsudo apt install neovim / brew install neovim
Vim 配置~/.vimrc
Neovim 配置~/.config/nvim/init.lua
LazyVim 安装git clone starter ~/.config/nvim
Nerd Font下载并安装到系统字体目录

下一步第 03 章 - 基础操作 → 学习 Vim 的模态编辑、基本移动和帮助系统。


扩展阅读