2017-07-31 145 views
1

使用Cygwin后消失,我试图创建和编辑在Vim的一个文件:Cygwin的终端输入退出VIM

touch test | vim 

这显然是一个错误;像vim "$(touch test)"这样的东西有更好的实际工作机会。然而,这个命令引发错误:

Vim: Warning: Input is not from a terminal.

并在此之后,Vim的打开,我:q退出程序。在我重新启动Cygwin之前,我在终端中输入的任何后续命令都是隐藏的。

这是为什么?

回答

2

你不明白管壳|在shell中做什么。

管道将采用前缀命令的stdout作为标准输入到下一个命令的子shell中。

您的touch foo不会产生任何输出,您预期会发生什么?相同的vim "$(touch test)"

如果你想创建一个文件,并在VIM一次性打开它,你可以试试:

touch foo && vim foo 

。如果你想用vim编辑它,其实,你可以只是简单:

vim foo 

然后在编辑后保存缓冲区。

+0

了解,但这甚至不能远程解决我的问题。我不是问如何创建一个文件并在vim中编辑 - 我有兴趣了解为什么终端输入在我描述的过程后消失。更具体地说,我试图找出这是*预期的行为*给出我输入的命令,或一个cygwin错误。 – alex

+1

好.. @ alex这是关于终端设置/配置。我没有太多的Windows操作系统经验,cygwin。抱歉。在Linux机器上,如果你想重置终端,你可以使用stty命令,'stty sane'。你可以尝试一下你的cygwin。 – Kent

+0

没问题!对于它的价值,“stty sane”似乎解决了Cygwin问题 - 但我更感兴趣的是弄清楚为什么会导致这种情况发生在我自己的博学上。 – alex