繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM