
Ich kann diese Option in der Dokumentation nicht finden. Gibt es eine Möglichkeit, vim während der Kompilierung nicht einzufrieren? Ich würde gerne sagen, man gibt „\ll“ ein und vim-latex führt die Kompilierung im Hintergrund aus und ruft Quickfix auf, falls Fehler auftreten.
Ist das möglich? Einfach?
Antwort1
Vim ist bekanntermaßen schlecht bei Asynchronität, aber es gibt Plugins wieAsynchroner BefehlDamit können Sie Befehle im Hintergrund ausführen und die Ausgabe in einer Split-Version sehen, sobald der Befehl abgeschlossen ist. AsyncCommand wird mit einem AsyncMake-Befehl geliefert, der make
asynchron verwendet werden kann. Daher verwende ich in meiner vimrc:
noremap <leader>mm :AsyncMake<cr>
zum Mappen <leader>mm
auf asynchrones Make und
:autocmd BufEnter *.tex let &makeprg="latexmk -e '$pdflatex=q/pdflatex -synctex=1 -interaction=nonstopmode/' -pdf ".expand("<amatch>")
um das Programm auf Latexmk einzustellen, make
wenn ich Tex-Dateien öffne.
Antwort2
AsyncCommand erfordert, dass vim mit Client-Server kompiliert wird, was möglicherweise eine neue Kompilierung erfordert, aber nicht muss. Für diejenigen von uns, die Cygwin verwenden (nach der Installation von Cygwin/X), ist dies auf jeden Fall der Fall.
Eine Alternative, die bei mir sofort funktioniert hat, war dieversendenPlugin, das den Start!
Befehl bereitstellt. Ich habe Folgendes in meiner vimrc:
map <leader>lr :w<CR>:Start! latexmk -pdf -pdflatex="pdflatex --shell-escape \%O \%S" % && latexmk -c %<CR>
Dadurch kann ich das manuelle Schreiben der Datei vor der Kompilierung überspringen und nach der Kompilierung (dem Befehl) aufräumen latexmk -c
. Eine einfachere Variante wäre
map <leader>lr :Start! latexmk -pdf % <CR>