回答:
を使用する:!
と、外部コマンドはシェルで実行され、一時的な出力はVim内にキャプチャされません。端末に何が印刷されるかを見るだけで、外部コマンドが終了するとVimに制御が戻ります。
出力を保持するには、Vim バッファーに読み込む必要があります。そのために、:read!
コマンドがあります。新しいスクラッチバッファーを開くには、これを:new
次と組み合わせます。
:new | 0read ! <command>
現在のバッファーのファイル名(%
)を外部コマンドに渡したい場合、を使用:execute
して、現在のバッファーで既に評価されているようにする必要があります。
:execute 'new | 0read ! interpreter' expand('%')
または、新しいバッファーでは、前のバッファーが代替バッファーになるという事実を使用し、#
代わりに使用します%
:
:new | 0read ! interpreter #
でスクラッチバッファを取り除き:bdelete!
ます。
実行中に出力を非同期で表示する場合は、@ chaos answerで説明されているように、外部マルチプレクサまたはプラグインが必要です。
私の知る限り、あなたはそれを行うことはできませんvim
。しかしscreen
、そのような端末マルチプレクサを使用してください。vimを開く前に、マルチプレクサを開始します。
screen
次にctrl- a Sを押します- 水平方向とctrl- a |垂直方向の画面がこぼれます。
vim
分割画面の1つでファイルを開きます。ctrl- を使用して他の画面にジャンプしますa tab。2番目の画面では、使用する前にまず新しい画面(ctrl- a c)を開く必要があることに注意してください。
vimのある画面ではファイルを編集でき、もう1つの画面ではファイルを実行してメッセージとコードを永続的に表示できます。
ここに、クイックリファレンスがありscreen
ます。
tmux
マルチプレクサとvim-dispatch
プラグインを使用して、ペイン間の分割とジャンプを自動化できます。