2

2 つのコマンドの通常のマッピングがあります。1 つは LaTeX を呼び出すため (F6 キーにマッピング)、もう 1 つは BiBTeX (F5) を呼び出すためのものです。これらは期待どおりに機能します。そして、すべての参照と引用が適切に挿入されていることを確認するために、それらを順番に実行する機能があります。この関数は次のとおりです。

function FullDocumentGeneration()
  execute "normal \<F6>"
  execute "normal \<F5>"
  execute "normal \<F6>"
  execute "normal \<F6>"
endfunction

詳細を除いて、これはうまく機能します。コマンドを実行した後、Enterを押してvimに戻るようにというメッセージが(シェルに)表示されますが(シェルコマンドを実行するときは通常どおり)、実行フローはとにかくvimに入ります- --Enter キーを押さなくても。通常はプログラムの出力を確認したいので、これは特に面倒です。そのため、Ctrl-Z を押してシェルに戻る必要があります。これを回避する方法はありますか?関数で何か間違ったことをしていますか?

4

2 に答える 2

0

execute を使用すると、コマンドが終了するとすぐに、以前使用していたモードに戻ります。とにかくやりたいことを行う関数を書いているので、呼び出しですべてを1行に入れないのはなぜですか。たとえば:!cmd line 1 && cmd line2 && cmd line3、すべて一度にシェルに移動します。または、別の方法として、必要な処理を実行するシェル スクリプトを作成し、展開して現在のファイルでそれを呼び出すこともできます%。たとえば、rst と pdflatex で書いているので、次のようにしています。

:!rst2html.py % latex-files/%.tex && cd latex-files && pdflatex %.tex

%現在のファイル名に展開されます。%:p現在開いているファイルへの絶対パスに展開されます。

于 2012-05-23T21:41:44.273 に答える
0

おそらく、次のマッピングは、hit-enter プロンプトに干渉します。挿入してみる

call getchar()

個々の行の間に、おそらくecho "Press any key"先頭に追加されます。

于 2012-05-17T09:54:38.633 に答える