2017-07-31 120 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