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.
If you use vim-plug, then add the
following line to your vimrc
file:
Plug 'lervag/vimtex'
Or use some other plugin manager:
The following is a simple guide for how to use vimtex. It only displays the
most basic features. Users are strongly encouraged to read or at least skim
through the documentation to learn about the different features and
possibilities provided by vimtex (see
here or :h vimtex
).
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 command or environment with
tsc
/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
).
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: