[英]Why doesn't “history | vim” work?
我想使用Vim来查看history
的结果(不在shell中)。 我认为history | vim
history | vim
将工作(使用history
结果作为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 ,它会看到你的“文件”有修改,因此你不能使用straight :q
命令退出。 相反,你必须强制退出:q!
,这有点笨重。
另一方面,您可以通过键入q
来更多或更少地退出。 看看这两个程序的手册页。 你会经常使用它们。
根据Russell Silva在评论中的建议,当您从stdin读取时,可以在只读模式下打开vim 。 只需提供-R
参数。 然后你可以正常退出而不需要覆盖:
history | vim -R -
除了vim -
,您可以尝试使用bash命令替换:
vim <(history)
也可以看看:
这发生在我尝试将其发送到后台控制台(&)
使用一个脚本:
...
vi "$file" &
...
# change to just:
vi "$file"
删除&,问题消失了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.