11

historyVim を使用して(シェルではなく)の結果を確認したい。うまくいくと思います(の入力としてhistory | vimの結果を使用します)が、次のように返されます。historyvim

$history | vim
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...

Vim: Finished.

誰でもこれを説明できますか?

4

3 に答える 3

26

vimにパイプすることで、標準入力ストリームを変更しています。vimは対話型プログラムであるため、標準入力がコンソールである必要があります。

vim で表示したい場合は、stdin からファイルを読み込んでいることを (引数 を指定して-)伝える必要があります。

history | vim -

または、 moreまたはlessを使用することもできます。

history | more
history | less

これらの後者の 2 つは好ましいです。vimにパイプすると、「ファイル」が変更されていると見なされるため、直接:qコマンドで終了することはできません。代わりに で強制終了する必要がありますが:q!、これは少し面倒です。

一方、入力するだけで多かれ少なかれ終了できます。これら 2 つのプログラムのマンページを見てください。あなたはそれらをたくさん使うでしょう。q


コメントで Russell Silva が推奨しているように、 stdin から読み取るときにvimを読み取り専用モードで開くことができます。-R引数を指定するだけです。次に、オーバーライドを必要とせずに通常どおり終了できます。

history | vim -R -
于 2013-07-18T02:20:56.250 に答える