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
:VimtexInverseSearch
that can be used by the viewer specific configuration to communicate with VimTeX in a "server agnostic" manner. See:help vimtex-synctex-inverse-search
for 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
环境以及sympy
package - 后续,学习学习再补充