5.3 KiB
vimtex
vimtex is a Vim plugin that provides support for writing LaTeX documents. It is based on LaTeX-Box and it shares a similar goal: to provide a simple and lightweight LaTeX plugin. It has been rewritten from scratch to provide a more modern and modular code base. See here for some more comments on the difference between vimtex and other LaTeX plugins for Vim.
Features
Below is a list of features offered by vimtex. The features are accessible as
both commands and mappings. The mappings generally start with
<localleader>l
, but if desired one can disable default mappings to define
custom mappings. All features are enabled by default, but each feature may be
disabled if desired.
- Document compilation with latexmk
- Compilation of selected part of document
- Support for several PDF viewers with forward search
- MuPDF
- Zathura
- Okular
- qpdfview
- SumatraPDF
- Other viewers are supported through a general interface
- Completion of citations, labels, and file names for figures
- Document navigation through
- table of content
- table of labels
- Word count (through
texcount
) - Motions
- Move between sections with
[[
,[]
,][
,]]
- Move between matching delimiters with
%
- Move between sections with
- Text objects
ic ac
Commandsid ad
Delimitersie ae
LaTeX environmentsi$ a$
Inline math structures
- Other mappings
- Delete the surrounding command or environment with
dsc
/dse
/ds$
- Change the surrounding command or environment with
csc
/cse
/cs$
- Toggle starred environment with
tse
- Toggle between e.g.
()
and\left(\right)
withtsd
- Close the current environment/delimiter in insert mode with
]]
- Insert new command with
<F7>
- Convenient insert mode mappings for faster typing of e.g. maths
- Delete the surrounding command or environment with
- Improved folding (
:h 'foldexpr'
) - Improved indentation (
:h 'indentexpr'
) - Improved syntax highlighting
- Highlight matching delimiters
- Support for
biblatex
/natbib
package - Support for
cleveref
package - Support for
listings
package - Support for
minted
package - Support for
dot2tex
with nested syntax highlighting
- Support for multi-file project packages
See the documentation for a thorough introduction to vimtex (e.g. :h vimtex
).
Installation
If you use vim-plug, then add the
following line to your vimrc
file:
Plug 'lervag/vimtex'
Or use some other plugin manager:
Alternatives
The following are some alternative LaTeX plugins for Vim:
-
vimtex currently has most of the features of LaTeX-Box, as well as some additional ones. See here for a relatively complete list of features.
One particular feature that LaTeX-Box has but vimtex misses, is the ability to do single-shot compilation with callback. This functionality was removed because it adds a lot of complexity for relatively little gain (IMHO).
Note: LaTeX-Box is included with vim-polyglot. Some users are not quite aware of this and end up trying vimtex with LaTeX-Box enabled. This will not work --- please disable LaTeX-Box first!
-
The main difference between vimtex and LaTeX-Suite (aka vim-latex) is probably that vimtex does not try to implement a full fledged IDE for LaTeX inside Vim. E.g.:
- vimtex does not provide a full snippet feature, because this is better handled by UltiSnips or neosnippet or similar snippet engines.
- vimtex builds upon Vim principles: It provides text objects for environments, inline math, it provides motions for sections and paragraphs
- vimtex uses
latexmk
for compilation with a callback feature to get instant feedback on compilation errors - vimtex is very modular: if you don't like a feature, you can turn it off.
For more alternatives and more information and discussions regarding LaTeX plugins for Vim, see: