Vimでは、コマンドラインから出力を取得するエレガントな方法は何ですか?


14

Vimを使用していて、コマンドラインから出力を取得して現在のファイルに追加したい場合、これを実行できます。

:! echo "foo" >> %

これにより、現在のファイルに「foo」が追加され、リロードする必要があります。

これを行うためのよりエレガントな方法はありますか?たとえば、その出力を貼り付け可能なバッファーに入れますか?

回答:


24

はい:

:r !echo "foo"

見る

:help :r!

これにより、現在の行の後にコマンドの出力が挿入されます。コマンド出力を貼り付け可能なレジスタにキャプチャする場合は、次の操作を実行できます。

:let @a = system('echo "foo"')

これで、コマンドの出力(末尾の改行を含む)はregisterにありaます。見る

:help let-@
:help system()

ヘルプを見て実験したところ、1):r"read"の略です(「read」または「r」と入力するだけで同じコマンドです)。2)実行:r path/to/foo.txtすると、その内容が挿入されます。カーソルの後のファイル。
ネイサンロング

また、私はsystem電話について知りませんでした。すごい!
ネイサンロング

1
また、のようなレジスタを手動で設定できることも知りませんでしたlet @a = 'foo'。クールなアイデアの1つは、検索と置換を行った後、他の場所に貼り付けるために検索用語をレジスタに保存することですlet @a = @/。「レジスタに/レジスタに含まれるもの、つまり最後の検索を含める」。
ネイサンロング

1
@ネイサン・ロング:どういたしまして。/レジスタから貼り付ける他の方法は、1):put /レジスタの内容を次の行に配置するために実行すること、2)挿入モードでCtrl-Rを入力/してからカーソルの位置にレジスタの内容を挿入することです。それらの詳細については:help :put、およびを参照してください:help i_CTRL-R
ゲイリージョン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.