web-dev-qa-db-ja.com

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

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

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

ls -la | vim

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

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

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

:r !ls -la

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

83
faizal

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

vim <(ls -la)

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

ls -la | vim -
134
chaos

あなたは本当に自分で親しいです。あなたは1文字が欠けていました。

ls -la | vim -
37
Cris Holdorph

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

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

vim -c ':r! ls -la'

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

19
Alaa Ali

Vimにstdinを開くように指示できます。

ls -la | vim -
12
iffy

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

ls -la > outputfile.txt
1
Jake Stewart

setlocal buftype=nofile

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

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

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

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

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

したがって、q<enter>だけで終了できます。