
このオプションはドキュメントでは見つからないようです。コンパイル中に vim をフリーズさせない方法はありますか? 私がやりたいのは、「\ll」と入力して vim-latex にバックグラウンドでコンパイルを実行させ、エラーがあれば quickfix を起動させることです。
それは可能ですか?簡単ですか?
答え1
Vimは非同期処理が苦手なことで知られていますが、次のようなプラグインが存在します。非同期コマンドバックグラウンドでコマンドを実行し、コマンドが終了したら出力を分割して表示できます。AsyncCommand には AsyncMake コマンドが付属しており、make
非同期で使用できます。そのため、私の vimrc では以下を使用します。
noremap <leader>mm :AsyncMake<cr>
非同期makeにマップし<leader>mm
、
: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>