1

すべてはシェルから始まります。たとえば、私はで使用urxvtしていzshます。そこで、でいくつかのファイルを開きますgvim。この場合はLaTeXファイルです。ここで、いくつかのコマンドを実行する必要があります (ドキュメントをコンパイルするためなどpdflatex)。

gvim元のシェルを起動した場所から、そのコマンドを実行するにはどうすればよいですか?

新しいシェルを一度gvim開いてから、そのシェルで指定されたコマンド ( ) の今後のすべての呼び出しを実行する必要がある場合でも、手動で入力することはできます。pdflatex

直接実行する際の問題:!pdflatexは、出力が表示されることですが、長すぎるとスクロールできず、リターンを押すとすべて消えてしまいます。

シェルを使用するという考えは、ウィンドウのフォーカスをデフォルトで切り替える必要がないことを意味します。したがって、通常、コマンドの出力は表示されますが、エラーが発生しない限り、.xml で作業を続けることができますgvim。コマンドを実行するたびに新しいシェルが生成されるとしたら、この種のワークフローは絶対に不可能です。

4

4 に答える 4

2

GVIMは、コ​​マンドをGVIMに送り返すことができるように、GVIMを起動したシェルへの「ハンドル」を保持しません。同期実行のため、GVIMからシェルを起動することもできず、GVIMでの作業を継続しながらコマンドをフィードし続けることもできません。

ウィンドウマネージャーの機能を使用してシェルウィンドウを起動(および後で再アクティブ化)し、コマンドをキーストロークとして送信する必要があると思います。Windowsでは、これは(VBScriptなどで)WshShell'sおよびメソッドRun()を介して実行できます。Linuxのウィンドウ制御にもおそらく同様のメカニズムがあります。AppActivate()SendKeys()

ただし、GVIMにそのシェルを配置してもかまわない場合(エミュレートされ、すべての欠点があります)、それを可能にするプラグインがあります。

于 2012-08-23T10:28:49.640 に答える
1

Conqueを使用することをお勧めします。欠点があります (遅くなる可能性がある、頻繁に更新されないなど) が、少なくとも期待どおりに機能します。

于 2012-08-23T10:26:02.573 に答える
1

このレシピとしての Vim Wikiは、外部シェルの必要性を完全に排除することで問題を解決すると思います。ソースが暗くなった場合は、次のようになります。

let b:tex_flavor = 'pdflatex'
compiler tex
set makeprg=pdflatex\ \-file\-line\-error\ \-interaction=nonstopmode
set errorformat=%f:%l:\ %m

基本的に、 を使用:makeしてコンパイルし、クイックフィックス ウィンドウ ( :copen) を使用してエラーを一覧表示します。

于 2012-08-23T13:15:13.917 に答える
0

を呼び出すことで、vim でシェル コマンドを実行できます!command

pdflatex を実行する特定の使用例については、次のショートカットを my に追加しました/etc/vimrc

:nmap <F5> :w<CR>:make<CR>

:makeは現在のディレクトリでgnu makeを呼び出し、最終的には を呼び出しますpdflatex。これは非常に柔軟です。現在のディレクトリに応じて同じショートカットが異なる動作をするためです (C でコーディングしている場合、通常は が呼び出されますgcc)。しかし、あなたはmakeに堪能でなければなりません:)。

F5 キーを押すと、ドキュメントが保存されてコンパイルされ、何時間もの入力時間を節約できました。

于 2012-08-23T09:56:56.617 に答える