Skip to content
A modern vim plugin for editing LaTeX files.
TeX Vim script Makefile Python Dockerfile Shell
Branch: master
Clone or download

Latest commit

AymenQ and lervag Use non-greedy match for lstinline/lstinputlisting
Use a non-greedy match (.\{-}) instead of .* for matching the contents
of square brackets after \lstinline or \lstinputlisting.
Latest commit cf6943e Apr 3, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Added texcount to Dockerfile and github actions Oct 24, 2019
after Further refactored syntax improvements Jul 31, 2019
autoload Use non-greedy match for lstinline/lstinputlisting Apr 3, 2020
compiler chore: minor clean up Mar 10, 2020
doc doc: added documentation for <plug>(vimtex-cmd-toggle-frac) Apr 2, 2020
docker Added texcount to Dockerfile and github actions Oct 24, 2019
ftplugin Fixed #1500 Sep 25, 2019
indent Improve indentation test Oct 7, 2019
media Another try Sep 30, 2016
rplugin/python3/denite/source Avoid SyntaxWarning on Py38. Mar 3, 2020
test test: added test for visual tsf Apr 2, 2020
.gitignore test: don't .gitignore all files under test Feb 17, 2020
.vintrc.yaml Added vintrc file Feb 1, 2017 Minor update Jan 29, 2020 A late happy new year! (2019++) Jan 18, 2020 doc: add docs for tsf - toggle fractions Mar 28, 2020


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.

Gitter CI tests Donate

Table of contents


If you use vim-plug, then add the following line to your vimrc file:

Plug 'lervag/vimtex'

Or use some other plugin manager:

If you use the new package feature in Vim, please note the following:

  • Make sure to read and understand the package feature: :help package!
  • Use the /pack/foo/start subdirectory to make sure the filetype plugin is automatically loaded for the tex filetypes.
  • Helptags are not generated automatically. Run :helptags to generate them.
  • Please note that by default Vim puts custom /start/ plugin directories at the end of the &runtimepath. This means the built in filetype plugin is loaded, which prevents Vimtex from loading. See #1413 for two suggested solutions to this. To see which scripts are loaded and in which order, use :scriptnames.
  • For more information on how to use the Vim native package solution, see here and here.

Quick Start

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 :h vimtex).

Note: Vimtex supports neovim; see the related wiki section or :h vimtex-faq-neovim.

Quick start gif


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, latexrun, tectonic, or arara
  • LaTeX log parsing for quickfix entries using
  • Compilation of selected part of document
  • Support for several PDF viewers with forward search
  • Completion of
    • citations
    • labels
    • commands
    • file names for figures, input/include, includepdf, includestandalone
    • glossary entries
    • package and documentclass names based on available .sty and .cls files
  • Document navigation through
    • table of content
    • table of labels
    • proper settings for 'include', 'includexpr', 'suffixesadd' and 'define', which among other things
      • allow :h include-search and :h definition-search
      • give enhanced gf command
  • Easy access to (online) documentation of packages
  • Word count (through texcount)
  • Motions
    • Move between section boundaries with [[, [], ][, and ]]
    • Move between environment boundaries with [m, [M, ]m, and ]M
    • Move between comment boundaries with [* and ]*
    • Move between matching delimiters with %
  • Text objects
    • ic ac Commands
    • id ad Delimiters
    • ie ae LaTeX environments
    • i$ a$ Inline math structures
    • iP aP Sections
  • Other mappings
    • Delete the surrounding command, environment or delimiter with dsc/dse/ds$/dsd
    • Change the surrounding command, environment or delimiter with csc/cse/cs$/csd
    • Toggle starred command or environment with tsc/tse
    • Toggle between e.g. () and \left(\right) with tsd
    • Toggle (inline) fractions with tsf
    • 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
  • 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
    • Nested syntax highlighting (minted, dot2tex, lualatex, gnuplottex, asymptote, pythontex)
  • Support for multi-file project packages

See the documentation for a thorough introduction to vimtex (e.g. :h vimtex).

Other relevant plugins

Even though vimtex provides a lot of nice features for working with LaTeX documents, there are several features that are better served by other, dedicated plugins. For a more detailed listing of these, please see :help vimtex-non-features.

Linting and syntax checking

Snippets and templates

Tag navigation


The following are some alternative LaTeX plugins for Vim:

  • LaTeX-Box

    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!

  • LaTeX-Suite

    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, latexrun, tectonic or arara 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.
  • AutomaticTexPlugin

  • vim-latex-live-preview

For more alternatives and more information and discussions regarding LaTeX plugins for Vim, see:

You can’t perform that action at this time.