Vim+VimTeX:带给你飞一般的LaTeX编辑体验
- 笔者采用的环境为Windows 10+gvim+TeXLive2020
- 本文主要参考VimTeX的使用说明vimtex.txt
- 在此,向VimTeX的开发者lervag致以谢意,感谢他开发维护了如此amazing的插件
更新日志:
2022/04/18: 采用VimtexInverseSearch进行反向搜索
1. 什么是VimTeX1
- vimtex是一款现代化的vim/gvim编辑器插件,方便LaTeX用户在vim编辑器下编辑,编译LaTeX文件,生成pdf文件。
- 特性
- 它最大的特点就是增加了vim/gvim对LaTeX文件的编译支持(一定程度上也简化了一些编译操作),使得我们不需要用命令行来编译tex源文件
- 提供了一系列LaTeX文件的编译方式(latexrun,latexmk 等 )的支持,内置了一些快捷键映射,当然也可以自行配置编译方式
- 支持tex语法高亮, 提供pdf阅读器的接口(如可以调用sumatra pdf阅读器预览生成的latex文件)。
- 支持pdf文件的反向搜索(反向搜索源代码),精确到行
- 支持部分文件编译:选中某个tex文件的完整片段,只编译选中的代码片段,方便用户调试latex code
- 统计tex文件中中西文字符的个数(其实是调用了TeXlive发行版中已经打包好的texcount脚本)
- 支持在每个section之中快速跳转
- 一些有用的映射,如
tsf将光标处分式在横排分式和竖排分式之间切换;cse改变光标周围的环境名称;]]自动补全右括号或环境名...(这个可以帮助我们完成括号匹配) - ...
2. 安装
如果您采用vim-plug管理vim插件,直接在.vimrc文件中添加
1
Plug 'lervag/vimtex'
- 然后normal模式下运行
:PlugInstall即可安装成功
3. 开始你的配置
自VimTeX-commit
f9fd179/tag v2.8
之后,增加了:VimtexInverseSearch支持反向搜索
VimTeX now works even better with inverse search from viewers:
- I've added
:VimtexInverseSearchthat can be used by the viewer specific configuration to communicate with VimTeX in a "server agnostic" manner. See:help vimtex-synctex-inverse-searchfor more info.- The documentation on configuration of inverse search with viewers has been rewritten.
1 | "LaTeX配置 |
4. Hello World
用vim/gvim打开一个文件,然后输入 1
2
3
4
5
6
7
8
\documentclass{atricle}
\usepackage{ctex}
\begin{document}
Hello,LaTeX{} World!
你好,世界!
\end{document}
然后,
<esc>进入normal模式,:w保存,输入\ll等待一小会,就可得到一个perfect的pdf文档Note:由于latexmk的特性(一旦检测到tex源文件或者相关文件的更改,就可自动编译的)。也就是说,后续修改文件,添加文字,我们只要
:w保存, 之后等待vim状态栏下方回显出vimtex: Compilation completed字样,接着输入\lv就可查看更新后的pdf文档。
5. 用法
5.1. 基本用法
| 按键 | 效果 | 工作模式 |
|---|---|---|
\li |
vimtex-info(文件信息) | n |
\lt |
vimtex-toc-open(打开目录) | n |
\ll |
vimtex-compile(编译文件) | n |
\lv |
vimtex-view(查看pdf文档) | n |
\li |
vimtex-imap-list(查看insert 模式下已定义的映射) | n |
K |
vim-doc-package(查看宏包信息) | n |
5.2. imaps映射4
- 举例来说, 如果你想输入
, 那么在插入模式下,只需要输入 + 8就行了 (因为8躺下了就是
5.3. 模块编辑

cse:change surrounding environment 比如在一个align周围(注意是将光标调整到align周围或环境内部),我们按下按键cse,在命令行就会出现
1 | Change surrounding environment:align |
的提示,然后我们在光标处输入equation,那么这个环境就会变成
1
2
3\begin{equation}
...
\end{equation}
tsd:toggle surrounding delimiter,互换括号,这个命令经常被用到(..光标..)与\left(..光标\right..)之间切换[..光标..]与\left[..光标..\right]\{..光标..\}与\left\{..光标..\right\}
]],自动补全右括号,右环境.%自动配对光标处的另一个括号 如
1 | ({[78光标 |
- 常用的
textobj模块,这些可以和y(复制),d(删除)及c(修改)搭配使用(详情请查看5) ic,ac:Text object for commandsid,ad:Text object for delimitersae,ie:Text object for environmentsa$,i$:Text object for inline math- ... 如: Note:
1
2
3
4
5..(78787光标8ui)..
-di(-->(光标)
.........
..(78787光标8ui)..
-da(-->..光标..a.包括文字两侧的环境,括号,$等,i.仅仅包括被包围起来的文字。
6. vimtex的哲学
- vimtex并不试图将vim变成一个完全的LaTeX
IDLE(这样可能会拖慢vim/gvim的加载速度)
- 几乎不提供LaTeX片段支持,因为有更好的插件实现:ultisnips+vim-snippets
- vimtex是模块化的,你可以选择关掉那些你不喜欢的功能(例如文件折叠)
7. 进阶操作
- ultisnips+vim-snippets可实现tex片段补全,以及编辑LaTeX文件的速度6
- 当然为了实现上面飞一般的操作,
也许你需要安装
python环境以及sympypackage - 后续,学习学习再补充