一尘不染

为什么不“历史| vim”的工作?

linux

我想使用Vim来查看结果history(不在shell中)。我认为history | vim可以使用(将的结果history用作的输入vim),但返回结果为:

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

Vim: Finished.

有人可以解释吗?


阅读 280

收藏
2020-06-07

共1个答案

一尘不染

通过传递到 vim中 ,您正在更改标准输入流。由于 vim 是交互式程序,因此它需要标准输入作为控制台。

如果要在vim中查看,应该告诉它您正在从stdin中读取文件(通过提供参数-):

history | vim -

另外,您可以使用 更多更少

history | more
history | less

后两者是优选的。如果通过管道 传送vim
,它将看到您的“文件”具有修改,因此您不能直接使用:q命令退出。相反,您必须通过强制退出:q!,这有点笨拙。

在另一方面,你可以退出 更多更少 只是打字q。看看这两个程序的手册页。您会经常使用它们。


根据Russell Silva在评论中的建议,当您从stdin中读取时,可以以只读模式打开 vim
。只需提供-R论点即可。然后,您可以正常退出而无需覆盖:

history | vim -R -
2020-06-07