任意のインタープリタ型プログラミング言語を考えてみましょう。
を使用して現在開いているスクリプトを実行し! interpreter %
、実行が完了したらリターンキーを使用して vim に戻ることができます。
現在のウィンドウを実行されたシェル コマンドの出力で置き換えずに、代わりに新しい分割ペインで出力を開くことは可能ですか? スクリプトの実行中にソース コードを表示し続けたいのですが。
試してみました:split ! interpreter %
が、うまくいきませんでした。
方法はありますか? 私は vim 7.3 を使用しています。
答え1
を使用すると:!
、外部コマンドはシェル内で実行され、一時的な出力は Vim 内でキャプチャされません。ターミナルに印刷される内容のみが表示され、外部コマンドが終了すると制御が Vim に戻ります。
出力を保存するには、それをVimに読み込む必要がありますバッファそのためにコマンドがあります:read!
。新しい傷バッファ、これを以下と組み合わせます:new
:
:new | 0read ! <command>
%
現在のバッファのファイル名 ( ) を外部コマンドに渡す場合は、 を使用する必要があります:execute
。これにより、現在のバッファで既に評価されていることになります。
:execute 'new | 0read ! interpreter' expand('%')
あるいは、新しいバッファでは、前のバッファが代わりの1#
の代わりにを使用します%
。
:new | 0read ! interpreter #
スクラッチ バッファを削除します:bdelete!
。
実行中に出力を非同期で確認したい場合は、@chaos の回答で述べられているように、外部マルチプレクサまたはプラグインが必要です。
答え2
私の知る限り、 ではそれを実行できませんvim
。ただし、そのためには次のような端末マルチプレクサを使用しますscreen
。 vim を開く前に、マルチプレクサを起動します。
screen
次に、水平分割画面の場合はctrl- を押しa S、垂直分割画面の場合はctrl- を押します。a |
次に、分割画面の 1 つでファイルを開きます。そして、 -vim
を使用して他の画面に移動します。2 番目の画面では、使用する前にまず新しい画面 ( - )を開く必要があることに注意してください。ctrla tabctrla c
vim の画面ではファイルを編集でき、別の画面ではファイルを実行してメッセージとコードを永続的に表示できます。
ここでクイックリファレンスのためにscreen
。