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 默认行为)在关键词上查看帮助。


典型适用场景

  1. 学术论文写作:全程不离 Vim,配合 Zathura + 正反向搜索,效率极高。
  2. 多文件大型 LaTeX 项目:支持 importsubfiles 宏包,跨文件跳转和补全都正常工作。
  3. 每日科研写作流:把 Vim 配置好后,latexmk -pvc 可以实现"保存即编译预览"的持续编译模式。
  4. 追求极简工具链:不想用 Overleaf、不想用 TeXShop,只想要一个键盘驱动的 LaTeX 编辑器。

坑与注意

  1. 插件管理器懒加载会破坏 VimTeX:尤其是 :VimtexInverseSearch 命令依赖全局命令,懒加载会导致找不到。不要用 lazy loading
  2. Neovim 低版本不兼容:2025 年 1 月后 VimTeX 要求 Neovim ≥ 0.10(旧版 Neovim 用 v2.15 tag)。如果 :VimtexInfo 报错,先升级 Neovim。
  3. +clientserver 缺失(仅 Vim):如果 Vim 没有编译进 +clientserver,反向搜索不可用。Neovim 无此问题。
  4. latexmk 未安装:大多数 Linux 发行版需要单独安装 latexmk(TeX Live 的 part of)。macOS 用户安装 MacTeX 后自带。
  5. Zathura 路径问题:Zathura 默认不支持加载时跳转行号,如果反向搜索不工作,检查 :VimtexInverseSearch 的配置是否正确映射了 Zathura 的 dbus 接口。
  6. \localleader 默认为 \:如果与其它插件快捷键冲突,可以改用逗号: vim let maplocalleader = "," 但注意映射后新的快捷键前缀也变成了 ,,不是 \
  7. 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 工作流在键盘上完成的完整工具链。