在 Vim 中编译和查看 LaTeX 文档的映射

Mappings for compiling and viewing LaTeX documents in Vim

我以前用LaTeX-Box plugin to compile and view LaTeX documents with .

但我不再使用它了,因为无法关闭的 \begin\end 突出显示(以及较低程度的括号匹配)使 Vim在大 .tex 文件中慢很多。

我知道如何创建用于编译 .tex 文档的替代映射:

autocmd FileType tex nnoremap <buffer> <F2> :!latexmk -xelatex %<cr>
autocmd FileType tex inoremap <buffer> <F2> <Esc>:!latexmk -xelatex %<cr>a

但这会在我当前所在的目录中创建输出文件,而不是在 .tex 文件所在的目录中(例如,如果我在 ~/Desktop 中并且我在 Vim 一个位于 ~/Documents 的文件,如果我按 F2.pdf 并且所有其他文件都在 ~/Desktop 而不是 ~/Documents 中创建)。 =27=]

我不知道如何创建映射以查看已编译的 .pdf 文档。

所以,我请求你帮我创建映射,它将编译 .tex 文件,并查看创建的 .pdf 文件。

您可以轻松地修改您的映射以在与您的源文件相同的目录中生成文件 :help filename-modifiers:

augroup LaTeX
    autocmd!
    autocmd FileType tex nnoremap <buffer> <F2> :!cd %:p:h && latexmk -xelatex %<cr>
    autocmd FileType tex inoremap <buffer> <F2> <Esc>:!cd %:p:h && latexmk -xelatex %<cr>a
augroup END

要用假想的 pdfviewer 程序打开生成的文件(为便于阅读而缩短命令):

!cd %:p:h && latexmk -xelatex % && pdfviewer %:p:r.pdf
augroup LaTeX
        autocmd!
        autocmd FileType tex nnoremap <buffer> <F2> :!cd '%:p:h' && latexmk -xelatex '%:t'<CR>
        autocmd FileType tex inoremap <buffer> <F2> <Esc>:!cd '%:p:h' && latexmk -xelatex '%:t'<CR>a
        autocmd FileType tex nnoremap <buffer> <F3> :silent !mupdf '%:p:r.pdf'&<CR>
        autocmd FileType tex inoremap <buffer> <F3> <Esc>:silent !mupdf '%:p:r.pdf'&<CR>a
augroup END

这对我有用。感谢 romainl for 弄明白了。