我似乎在文档中找不到此选项。有没有办法在编译过程中不冻结 vim?我想要的是输入“\ll”,让 vim-latex 在后台运行编译,并且如果出现错误,则调出 quickfix。
这可能吗?容易吗?
答案1
众所周知,Vim 的异步性很差,但有以下插件:异步命令允许您在后台运行命令,并在命令完成后以拆分形式查看输出。AsyncCommand 附带一个 AsyncMake 命令,可用于make
异步使用。因此,在我的 vimrc 中我使用:
noremap <leader>mm :AsyncMake<cr>
映射<leader>mm
到异步 make,以及
:autocmd BufEnter *.tex let &makeprg="latexmk -e '$pdflatex=q/pdflatex -synctex=1 -interaction=nonstopmode/' -pdf ".expand("<amatch>")
make
当我打开 tex 文件时将程序设置为 latexmk。
答案2
AsyncCommand 要求 vim 与 clientserver 一起编译,这可能需要也可能不需要新的编译,对于我们这些运行 Cygwin 的人来说肯定会这样(安装 Cygwin/X 之后)。
对我来说,一个立即有效的替代方案是派遣插件,它提供了Start!
命令。我的 vimrc 中有以下内容:
map <leader>lr :w<CR>:Start! latexmk -pdf -pdflatex="pdflatex --shell-escape \%O \%S" % && latexmk -c %<CR>
这样我就不用在编译前手动写入文件,也可以在编译后清理文件(命令latexmk -c
)。一个更简单的变体是
map <leader>lr :Start! latexmk -pdf % <CR>