使用neovim编写latex
neovim是一个相当好用的编辑器,可以说是vim的加强版。最近在使用nvim编辑一本latex图书,所以心血来潮想再看一下那些适合在nvim下编辑latex的插件,当我点开插件vimtex的官网时发现 他的README直接介绍了其他的插件,所以直接引用他的README.md 作为参考,放于此处。
VimTeX
VimTeX is a modern Vim and Neovim filetype and syntax plugin for LaTeX files.
Table of contents
- Requirements
- Installation
- Configuration
- Quick Start
- Screenshots
- Features
- Other relevant plugins
- Alternatives
- VimTeX on the Web
Requirements
VimTeX requires Vim version 8.0.1453 or Neovim version 0.4.3. The requirements were updated in July 2020 after the release of VimTeX 1.0. If you are stuck on older versions of Vim or Neovim, then you should not use the most recent version of VimTeX, but instead remain at the v1.0 tag.
Some features require external tools. For example, the default
compiler backend relies on latexmk.
Users are encouraged to read the requirements section in the documentation
(:h vimtex-requirements
).
Installation
If you use vim-plug or packer.nvim, then
add one of the following lines to your vimrc
file,
correspondingly:
1 | " vim-plug |
Or use some other plugin manager: * vundle * neobundle * pathogen
Note: Many plugin managers provide mechanisms to
lazy load plugins. Please don't use this for VimTeX! VimTeX is already
lazy loaded by virtue of being a filetype plugin and by using the
autoload mechanisms. There is therefore nothing to gain by forcing
VimTeX to lazily load through the plugin manager. In fact, doing it will
break the inverse-search mechanism, which relies on a
global command (:VimtexInverseSearch
).
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.
Configuration
After installing VimTeX, you should edit your .vimrc
file or init.vim
file to configure VimTeX to your liking.
Users should read the documentation to learn the various configuration
possibilities, but the below is a simple overview of some of the main
aspects.
1 | " This is necessary for VimTeX to load properly. The "indent" is optional. |
Note: If the compiler or the viewer doesn't start
properly, one may type <localleader>li
to view the
system commands that were executed to start them. To inspect the
compiler output, use <localleader>lo
.
Quick Start
The following video shows how to use VimTeX's main features (credits:
@DustyTopology from #1946).
The example LaTeX file used in the video is available under test/example-quick-start/main.tex
and it may be instructive to copy the file and play with it to learn
some of these basic functions.
https://user-images.githubusercontent.com/66584581/119213849-1b7d4080-ba77-11eb-8a31-7ff7b9a4a020.mp4
Tutorial
Both new and experienced users are also encouraged to read the third-party article Getting started with the VimTeX plugin. The article covers VimTeX's core features and contains plenty of examples and high-resolution animations intended to help new users ease into working with the plugin.
Documentation
Users are of course strongly encouraged to read the
documentation, at least the introduction, to learn about the different
features and possibilities provided by VimTeX (see :h vimtex
). Advanced users and
potential developers may also be interested in reading the supplementary
documents:
Screenshots
Here is an example of the syntax highlighting provided by VimTeX. The conceal feature is active on the right-hand side split. The example is made by @DustyTopology with the vim-colors-xcode colorscheme with some minor adjustments described here.
GIFs
See the file VISUALS.md for screencast-style GIFs demonstrating VimTeX's core motions, text-editing commands, and text objects.
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. Nearly all features are
enabled by default, but each feature may be disabled if desired. The two
exceptions are code folding and formating, which are disabled by default
and must be manually enabled.
- Document compilation with latexmk, latexrun, tectonic, or arara
- LaTeX log parsing for quickfix entries using
- internal method
- pplatex
- 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 contents
- 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
- allow
- Easy access to (online) documentation of packages
- Word count (through
texcount
) - Motions (link to GIF
demonstrations)
- Move between section boundaries with
[[
,[]
,][
, and]]
- Move between environment boundaries with
[m
,[M
,]m
, and]M
- Move between math environment boundaries with
[n
,[N
,]n
, and]N
- Move between frame environment boundaries with
[r
,[R
,]r
, and]R
- Move between comment boundaries with
[*
and]*
- Move between matching delimiters with
%
- Move between section boundaries with
- Text objects (link to GIF
demonstrations)
ic ac
Commandsid ad
Delimitersie ae
LaTeX environmentsi$ a$
Math environmentsiP aP
Sectionsim am
Items
- Other mappings (link to GIF
demonstrations)
- 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 inline and displaymath with
ts$
- Toggle between e.g.
()
and\left(\right)
withtsd
- Toggle (inline) fractions with
tsf
- Close the current environment/delimiter in insert mode with
]]
- Add
\left ... \right)
modifiers to surrounding delimiters with<F8>
- Insert new command with
<F7>
- Convenient insert mode mappings for faster typing of e.g. maths
- Context menu on citations (e.g.
\cite{...}
) mapped to<cr>
- Delete the surrounding command, environment or delimiter with
- Improved folding (
:h 'foldexpr'
) - Improved indentation (
:h 'indentexpr'
) - Syntax highlighting
- A consistent core syntax specification
- General syntax highlighting for several popular LaTeX packages
- Nested syntax highlighting for several popular LaTeX packages
- Highlight matching delimiters
- 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-and-friends
.
Linting and syntax checking
Snippets and templates
Tag navigation
Alternatives
The following are some alternative LaTeX plugins for Vim:
-
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
orarara
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.
-
"A simple, lightweight Neovim plugin that facilitates LaTeX build engine selection via magic comments. It is designed with the TexLab LSP server's build functionality in mind, which at the time of this plugin's inception had to be specified in init.lua/init.vim and could not be set on a by-project basis."
This plugin should be combined with the TexLab LSP server, and it only works on neovim.
-
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).
For more alternatives and more information and discussions regarding LaTeX plugins for Vim, see:
VimTeX on the Web
VimTeX users may be interested in reading @ejmastnak's series on Efficient LaTeX Using (Neo)Vim, which covers all the fundamentals of setting up a VimTeX-based LaTeX workflow, including usage of the VimTeX plugin, compilation, setting up forward and inverse search with a PDF reader, and Vimscript tools for user-specific customization.
If you know of (or create) other up-to-date, high-quality guides to VimTeX's features on third-party websites, feel free to submit a pull request updating this section.