Vimの外部コマンドへのバッファのパイピング


92

私は一種のVim初心者です。現在のバッファーの内容を外部コマンドの標準入力(メールとしましょう)に送信します。私の最後の目的は、現在のVimバッファーから電子メールをすばやく送信するためのショートカットを設定することです。これは簡単なことだと思いますが、Vimバッファーを外部コマンドに送信する方法が見つかりませんでした。前もって感謝します。


選択したテキストを提供するための関連質問STDIN:シェルコマンドにパイプがシェルとインフォラインで出力を受け取るようにし、出力を選択し、元のテキストを置き換える
user1129682

回答:


130

を使用:w !cmdして、現在のバッファーを外部コマンドのstdinに書き込むことができます。から:help :w_c

:[範囲] w [rite] [++ opt]!{cmd}

行を標準入力として実行{cmd}[range]ます(の前のスペースに注意してください'!')。 {cmd}と同様に実行され":!{cmd}"、すべて'!'が前のコマンドに置き換えられ|:!|ます。

関連するコマンドは:%!cmd同じことを行い、現在のバッファをコマンドの出力で置き換えます。その:%!sortため、外部ソートコマンドを呼び出して、現在のバッファーを所定の位置にソートします。


6
これは、jsonを次のようにフォーマットするのに便利です。 :'<,'>!python -mjson.toolまたは:%!python -mjson.tool
TrinitronX

1
書式設定は、保存されたバージョン(現在のバッファーとは異なる場合があります)を使用するため:%!gofmt、最後のなしで使用%します
thomasrutter

これが現在のバッファを成功時にのみコマンド出力に置き換える方法はありますか?コマンドがゼロ以外を返した場合、バッファーを置き換えませんか?
thomasrutter 2017年

バッファが代わりに意図された出力のエラーメッセージに置き換えられ@thomasrutter場合、あなたができるだけのプレスuアンドゥのために
törzsmókus

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