コマンド出力をbashでvimにリダイレクトするにはどうすればよいですか?


87

bashコマンドの出力を新しいファイルにリダイレクトしようとしています。

以下のようにパイプを試してみると:

ls -la | vim

Bashはエラーを表示します:

Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.

私はVimを開いてから使用できることを知っています:

:r !ls -la

しかし、bim自体でこれを行う方法はありますか?Vimが開かれ、出力が自動的にそこに貼り付けられますか?

回答:


140

プロセス置換を使用できます(これはから読み取れないアプリケーションでも機能しますSTDIN)。

vim <(ls -la)

または、vimの関数を使用して読み取りますSTDIN

ls -la | vim -

2
<(ls -la)実際にはコマンド置換よりむしろプロセス置換です。
エリアケイガン14

1
私はvimのオプションが本当に好きです。データダンプから出力を簡単に検索、検索、保存できます。
ジョスアレクサンダーイバラ


19

誰かに新しい何かを教えることを願う別のアプローチがあります。

コマンド:r !ls -laがvim内で機能することがわかっている場合は、次の手順を実行してvimを開き、bashから直接コマンドが開くとすぐにコマンドを実行できます。

vim -c ':r! ls -la'

これは、vimコマンドを開いてから実行することと同じです:r! ls -la。これはvim、コマンドが-cオプションの後に来るコマンドで機能するはずです。



1

目的が単に出力をテキストファイルに取得することである場合は、vimを呼び出す必要はありません。Bashは単独でそれを行うことができます

ls -la > outputfile.txt

1

setlocal buftype=nofile

これは、置き換えるエイリアスを作成する場合に適したオプションですless

seq 100 | vim +':setlocal buftype=nofile' -

今、あなたはタイプする必要はありません!やめるために。

別のオプションは次のとおりです。

seq 100 | vim +'nnoremap q :quit!' -

ですから、だけで終了できますq<enter>


良いアイデア。これを長く入力するよりも間違いなく短い!:)
コーデ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.