:!の出力を持つことは可能ですか?ウィンドウ全体ではなく分割でコマンドを実行しますか?


11

2つのスプリットがあるvimセッションがある場合、:!コマンドを実行すると、ウィンドウ全体に結果が表示されます。アクティブなスプリットに出力を表示することは可能ですか?


2
いいえ、できません。:!コマンドラインにif が表示されている場合、出力は1つだけで、画面の下部にのみ表示されます。私が考えることができる最高のものは、現在のバッファーの下に新しいバッファー/:splitを作成することです...
Martin Tournoij

@Carpetsmoker、私にとって、の出力は:!コマンドラインに行きません。代わりに、vimセッションが消え、端末ウィンドウ全体に端末の出力が表示さvimれます。
Drs

1
使用している端末やTERM設定が原因の可能性がありますか?
Martin Tournoij、2015

この違いは、altscreenscreen)または代替画面tmux)に関係しています。
tommcdo 2015

回答:


8

次のコマンドを使用できます。

:new | 0read ! command

これにより、新しいスプリットが開き、コマンドの出力がこのスプリットに配置されます(前述のように、現在アクティブなスプリットにはありません)。

新しい -新しい分割を作成し、

読み取り -コマンド出力を取得する

コマンド -実際のコマンド


6

これを実行するコマンドを作成できます。

  1. 新しい分割(またはタブ)を開く
  2. コマンドを実行し、その分割(またはタブ)に結果を表示します

コマンドは次のようになります。

:Rsplit command

または

:Rtab command

あなたの中で.vimrcこれを書くことができます:

" execute a command and show its output in a split window
command! -nargs=* -complete=shellcmd Rsplit execute "new | r! <args>"

" execute a command and show its output in a new tab
command! -nargs=* -complete=shellcmd Rtab execute "tabnew | r! <args>"

を使用して独自のコマンドを作成する方法を見つけることができます:help :command


1

それは不可能です。tmux(IIRC)、画面などの別のツールで画面を分割する必要があります...

実行されたプログラムを操作する必要がない場合は、その結果を(vimの意味で:h windows)任意のウィンドウに直接インポートできます:r!command line:h :r!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.