我想使用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來查看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,你應該告訴它,你正在閱讀從標準輸入文件(通過提供參數-
):
history | vim -
或者,你可以只使用更或少:
history | more
history | less
這些後兩者是優選的。如果你輸入vim,它會看到你的「文件」有修改,所以你不能用直接的:q
命令退出。相反,你必須強制退出:q!
,這有點笨重。
在另一方面,你可以更或少只需鍵入q
退出。看看這兩個程序的手冊頁。你會用很多。
正如意見建議羅素·席爾瓦,您可以在只讀模式,當你從標準輸入讀取打開VIM。只需提供-R
參數。然後你就可以正常退出,而無需倍率:
history | vim -R -
我嘗試過'vim |歷史也......這似乎是一件可怕的事情..結果是外殼不響應..我不能輸入任何說明..你能解釋這個給我嗎? – Sayakiss
哦,親愛的。你所做的是將'vim'的輸出連接到'history'的輸入。這不是一個好主意。請記住,'vim'仍然在運行,因爲它是一個交互式程序。您仍然可以發送命令,因爲它仍在從標準輸入讀取數據,但由於您將輸出管道輸送到另一個程序中,因此您無法看到它。如果你輸入':q!'並按下回車鍵,你應該返回到shell。如果您已進入其他編輯模式,您可能需要按幾次Esc鍵。 – paddy
哇......當我輸入':q!'並按下回車鍵時,我會返回到shell ...它的工作原理..真的非常感謝〜 – Sayakiss
除此之外的vim -
,您可以嘗試bash命令替換,如:
vim <(history)
參見:
+1。我喜歡這個解決方案(也在Ubuntu上成功測試過,因爲「vi」實際上是一個到/ usr/bin/vim.tiny的符號鏈接)。儘管如此,爲什麼你會爲此付出一些代價呢?人們有時會很殘酷。 :) – syntaxerror
這happend我試圖把它發送到使用背景控制檯(&)
一個腳本:
...
vi "$file" &
...
# change to just:
vi "$file"
去除&,問題就走了。
這是不相關的問題... –
如果你想使用vim作爲尋呼機[vimpager](https://github.com/rkitover/vimpager)似乎工作得很好。 – FDinoff