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