我想使用Vim来查看结果history(不在shell中)。我认为history | vim可以使用(将的结果history用作的输入vim),但返回结果为:
history
history | vim
vim
$history | vim Vim: Warning: Input is not from a terminal Vim: Error reading input, exiting... Vim: Finished.
有人可以解释吗?
通过传递到 vim中 ,您正在更改标准输入流。由于 vim 是交互式程序,因此它需要标准输入作为控制台。
如果要在vim中查看,应该告诉它您正在从stdin中读取文件(通过提供参数-):
-
history | vim -
另外,您可以使用 更多 或 更少 :
history | more history | less
后两者是优选的。如果通过管道 传送 到 vim ,它将看到您的“文件”具有修改,因此您不能直接使用:q命令退出。相反,您必须通过强制退出:q!,这有点笨拙。
:q
:q!
在另一方面,你可以退出 更多 或 更少 只是打字q。看看这两个程序的手册页。您会经常使用它们。
q
根据Russell Silva在评论中的建议,当您从stdin中读取时,可以以只读模式打开 vim 。只需提供-R论点即可。然后,您可以正常退出而无需覆盖:
-R
history | vim -R -