2016-11-29 7 views
1

私はこのようなバッファに入っています.4行目で1行目から2行目を実行し、4行目の同じバッファに出力します(カーソルがどこにあるか):vim - シェルの行範囲を同じバッファに出力する

echo "Testing" 
echo "more testing" 

# and here I want the output from running lines 1 to 2 

...私はライン1と2を実行するために1,2w !shを行うと、出力が一時的なバッファであることを何に示すことができます知っています。しかし、後で編集するために私の実際のバッファに入るにはどうすればいいですか? (だけではなく番号で指定された行範囲とビジュアルモード選択されたテキスト、で動作するように同じもの)

+2

彼のQ **はSE上でより適切かもしれません関連サイト http://vi.stackexchange.comまたはhttp://superuser.com。あなたのQの下にある 'flag'リンクを使って、司会者にそれを移動するように依頼してください。 2つの異なるサイトに同じQを投稿しないでください。 。幸運 – shellter

+1

ひどいハックですが、このケースでは機能し、ほとんどのケースに合わせて変更することができます: ':1,3! tee/dev/stderr | 。これはビジュアルモードの選択テキストでも機能しますが、シェルコマンドの直後に出力が必要です。 –

+0

あなたのハックは私が欲しかったことをしませんでした(私のバッファ全体を出力に置き換えました)が、私は正しい解決方法を教えてくれると思います。 – NeuronQ

答えて

1

あなたは:w !...:help :w_c)を使用していたが、あなたはおそらく:!:help :!を)欲しい:

gg  - go to top 
Vj  - select the two lines 
y  - yank into a buffer 
4gg  - go to 4th line 
V  - select it 
p  - paste over it 
gv  - reselect the pasted range 
:!sh<CR> - execute in shell and replace 

や、信頼exはより多くのコマンド、

:4d 
:1,2y 
:3pu 
:4,5!sh 

NB:!sh Iほとんどの場合!に相当します。!はデフォルトのシェルを呼び出します。

+0

Thxは解決策ですが、 ..私が望んでいたのは、おそらく '1,2w!sh'の' w'を現在のカーソル位置で結果を流すか、新しいバッファで置き換えることができるということでした...私はそれを編集して、それから新しいコマンドを抽出し、それから繰り返す、私が今Sublime + ShellCommandでやっているワークフローですが、任意のサーバ上でssh-ingするときにこれをしたいと思っています( "virgin" vim with pluginデフォルトまたは他の誰かのvim config) – NeuronQ

+0

あまりにも多くの作業は?ほとんどの場合、元のコードがプロセスで破棄されないようにするだけです。ここで唯一本当に重要なコマンドは ':!'です。また、自分自身の.vimrcをサーバにコピーしたり、ファイルからマクロをロードしたり、sudoをしていない限り、自分のVimをサーバ上で使うのに 'sshfs'を使うことはできません。 – Amadan

+0

あなたの答えを受け入れることができますので、正しいことをするものを見つけることができず、それほど厄介ではありません。ビジュアルモードの選択+ ':!sh'は正しいことです(プラス、厄介なヤンクアンドペーストルーチン...私は怠け者です...しかし、もし私が怠け者でなければ、 guess ...) – NeuronQ

0

Yey!それを見つけた。場合、誰が処女/外国VIM(プラグインレスや他の誰かのサーバー/設定)でこれと同じハックを必要とします:

:1,2r !sh %

(ええ、出力はコマンドの後に行く、あるいは技術的にコマンドが置き換えられますエコーはありますが、カーソルの位置ではありませんが、vimでSublime + SublimeCommandのワークフローを複製するのに十分です))

+1

あなたのコマンドを実行すると、 'E172:1つのファイル名しか許されません。構文は意味をなさない。 –

+0

はい、申し訳ありませんが、 ':1,2r!sh%'の代わりに ':r1,2!sh%'と書かれています。 – NeuronQ

+1

シェルは_entire_バッファを実行し、その出力を '2 '。あなたが求めているものではありません、そうですか? –

関連する問題