lervag/vimtex · 上手攻略
- 仓库:lervag/vimtex
- 链接:https://github.com/lervag/vimtex
- 分类:academic-writing
- 作者:Jay
- 更新:2026-07-15
这是什么
VimTeX 是 Vim 和 Neovim 的现代化 LaTeX 文件类型插件,提供语法高亮、编译集成、PDF 预览正向/反向搜索、文本对象、快捷键绑定等一整套 LaTeX 写作工作流。它不是"在 Vim 里写 LaTeX"的简单语法包,而是一个完整的 LaTeX IDE 解决方案——覆盖从写作到编译到预览的全流程。
核心特点:模块化(每个功能可单独开关)、轻量(基于 autoload,不懒加载)、现代(支持 Neovim 0.10+ / Vim 9.1+)。
解决什么问题
- 不用离开 Vim 就能完成 LaTeX 写作、编译、调试、预览全流程
- 正向/反向搜索:在 Vim 里跳转到 PDF 对应位置,或在 PDF 阅读器里跳回 Vim 光标位置
- 文本对象:用
ie/ae操作 LaTeX 环境,用i$/a$操作数学公式块,比纯文本编辑高效得多 - 快速导航:用
[[/]]在章节目录跳转,用[m/]m在环境间跳转 - 智能补全:自动补全
\cite{、\ref{、包名、文档类名等 - 语法高亮:支持 LaTeX 核心语法和数十个常用宏包(babel、amsmath、cleveref 等)的嵌套高亮
快速安装
环境要求
- Vim ≥ 9.1 或 Neovim ≥ 0.10
- latexmk(默认编译器后端,需要安装 TeX Live 或同等发行版)
- PDF 阅读器(推荐 Zathura、Okular、Skim、SumatraPDF 任一)
+clientserver特性(Vim 专用,Neovim 默认有)
安装步骤(以 Neovim + lazy.nvim 为例)
-- ~/.config/nvim/lua/plugins/vimtex.lua(或你的插件配置文件中)
{
"lervag/vimtex",
lazy = false, -- ⚠️ 重要:不要懒加载 VimTeX,会破坏反向搜索
-- tag = "v2.15", -- 如需固定版本,取消此行注释
init = function()
vim.g.vimtex_view_method = "zathura" -- PDF 阅读器
vim.g.vimtex_compiler_method = "latexmk" -- 编译器后端
end,
}
或用 vim-plug
" ~/.vimrc
filetype plugin indent on
syntax enable
Plug 'lervag/vimtex'
" 基本配置
let g:vimtex_view_method = 'zathura'
let g:vimtex_compiler_method = 'latexmk'
let maplocalleader = "\\"
⚠️ 不要使用插件管理器的懒加载功能!VimTeX 已经是 filetype 插件,通过 autoload 机制实现"需要时才加载",强行懒加载反而会破坏
:VimtexInverseSearch等依赖全局命令的功能。
验证安装
打开一个 .tex 文件,运行:
:VimtexInfo
如果输出了系统状态信息窗口,说明 VimTeX 已正常加载。如果报错 E492: Not an editor command,说明插件未加载成功,检查上文的"坑与注意"第 1 条。
核心用法
编译文档
:vimtex-compile
默认使用 latexmk,按 \ll(双反斜杠 L)开始编译,状态栏实时显示编译进度。出错时按 \lo 查看编译输出日志。
正向搜索(Vim → PDF)
编译完成后,将光标放在某个段落,运行:
:vimtex-compile
然后 \lv(双反斜杠 L V)打开 PDF 视图,光标位置对应 PDF 中的位置(需要 PDF 阅读器支持,SumatraPDF、Zathura、Okular、Skim 均支持)。
反向搜索(PDF → Vim)
在 Zathura 中,按 Ctrl + 点击;在 SumatraPDF 中,同样 Ctrl + 点击,即可跳回 Vim 对应位置。
核心快捷键(默认以 \ 为 localleader)
| 快捷键 | 功能 |
|---|---|
\ll |
编译 / 停止编译 |
\lv |
打开 PDF 预览 |
\lo |
查看编译输出 |
\li |
查看执行的系统命令 |
\lt |
重新编译选定部分 |
导航命令
| 命令 | 功能 |
|---|---|
[[ / ]] |
跳转到上一节 / 下一节 |
[m / ]m |
跳转到上一环境 / 下一环境(itemize、enumerate 等) |
[n / ]n |
跳转到上一个数学环境 / 下一个数学环境 |
% |
在匹配的分隔符(括号、引号、环境首尾)间跳转 |
文本对象(重要!)
| 命令 | 范围 |
|---|---|
ie / ae |
整个 LaTeX 环境(begin...end 之间) |
i$ / a$ |
数学环境(行内或独立公式) |
id / ad |
分隔符对(如 \left( ... \right)) |
iP / aP |
当前章节(section / chapter) |
im / am |
当前列表项(item) |
示例(假设光标在数学公式内):
- cs$ → 将当前公式从行内切换为独立显示($...$ → $$...$$),反之亦然
- ts$ → 在行内/独立数学模式间切换
删除/修改快捷键
| 命令 | 功能 |
|---|---|
dsc / dse / ds$ / dsd |
删除周围命令 / 环境 / 数学 / 分隔符 |
csc / cse / cs$ / csd |
修改周围命令 / 环境 / 数学 / 分隔符 |
tsf |
在 a/b 和 \frac{a}{b} 间切换分式写法 |
tsd |
在 () 和 \left(\right) 间切换 |
补全
在插入模式下输入 \ref{ 后按 Ctrl+x Ctrl+o(或 Ctrl+n),VimTeX 会列出当前文档中所有 label 供选择。同样支持 \cite{、文件名、包名等补全。
查看文档
:help vimtex
所有功能都有详细文档,按 K(Vim 默认行为)在关键词上查看帮助。
典型适用场景
- 学术论文写作:全程不离 Vim,配合 Zathura + 正反向搜索,效率极高。
- 多文件大型 LaTeX 项目:支持
import和subfiles宏包,跨文件跳转和补全都正常工作。 - 每日科研写作流:把 Vim 配置好后,
latexmk -pvc可以实现"保存即编译预览"的持续编译模式。 - 追求极简工具链:不想用 Overleaf、不想用 TeXShop,只想要一个键盘驱动的 LaTeX 编辑器。
坑与注意
- 插件管理器懒加载会破坏 VimTeX:尤其是
:VimtexInverseSearch命令依赖全局命令,懒加载会导致找不到。不要用 lazy loading。 - Neovim 低版本不兼容:2025 年 1 月后 VimTeX 要求 Neovim ≥ 0.10(旧版 Neovim 用 v2.15 tag)。如果
:VimtexInfo报错,先升级 Neovim。 +clientserver缺失(仅 Vim):如果 Vim 没有编译进+clientserver,反向搜索不可用。Neovim 无此问题。- latexmk 未安装:大多数 Linux 发行版需要单独安装
latexmk(TeX Live 的 part of)。macOS 用户安装 MacTeX 后自带。 - Zathura 路径问题:Zathura 默认不支持加载时跳转行号,如果反向搜索不工作,检查
:VimtexInverseSearch的配置是否正确映射了 Zathura 的 dbus 接口。 \localleader默认为\:如果与其它插件快捷键冲突,可以改用逗号:vim let maplocalleader = ","但注意映射后新的快捷键前缀也变成了,,不是\。- PDF 阅读器正反向搜索配置:不同阅读器配置方式不同,以下是 Zathura(最流行)的标准做法——VimTeX 默认通常能自动检测,无需手动配置。但如果有问题,查阅
:help vimtex-viewer-zathura。
与同类对比
| 特性 | VimTeX | LaTeX-Suite (vim-latex) | LaTeX-Box | TexLab (LSP) |
|---|---|---|---|---|
| 维护状态 | 活跃(持续更新) | 较老 | 一般维护 | 中等 |
| 模块化 | ✅ 任意功能可关闭 | ❌ | ❌ | N/A(是 LSP) |
| 编译后端 | latexmk / latexrun / tectonic / arara | latexmk | 单一 | TexLab 构建 |
| 文本对象 | ✅ 完整 | 部分 | 基础 | ❌ |
| 正向/反向搜索 | ✅ 多阅读器 | ✅ | ✅ | ✅(via LSP) |
| 多文件项目 | ✅(import/subfiles) | ✅ | ✅ | ✅ |
| Snippet 方案 | 需配合 UltiSnips | 内置(较老) | ❌ | ❌ |
| Neovim 兼容 | ✅ | 部分 | 部分 | ✅ |
一句话总结:VimTeX 是目前 Vim/Neovim 生态里功能最完整、维护最活跃、社区最成熟的 LaTeX 插件,模块化设计让它既适合新手快速上手,也能满足高级用户的深度定制需求。
一句话推荐
如果你用 Vim/Neovim 写 LaTeX,VimTeX 是唯一正确的选择——它不是"一个语法高亮插件",而是能让你的整个 LaTeX 工作流在键盘上完成的完整工具链。