使用Cygwin,我尝试在Vim中创建和编辑文件:
touch test | vim
这显然是一个错误;像vim "$(touch test)"
这样的东西有更好的实际工作机会。然而,此命令会抛出错误:
Vim:警告:输入不是来自终端。
在此之后,Vim打开,我用:q
退出程序。我进入终端的任何后续命令都会被隐藏起来,直到我重新启动Cygwin。
为什么会这样?
答案 0 :(得分:2)
你不明白管道|
在shell中做了什么。
在子shell中,Pipe会将pervious命令的stdout作为stdin作为下一个命令。
你的touch foo
没有产生任何输出,你期望发生什么?同样适用于vim "$(touch test)"
。
如果您想创建一个文件并一次性在vim中打开它,您可以尝试:
touch foo && vim foo
如果你想用vim编辑它,实际上,你可以简单地说:
vim foo
然后在编辑后保存缓冲区。