2017-03-31 423 views
0

使用zsh時,我有時會不小心按Escape退出習慣,期望它像在Windows中一樣清除整條線。相反,它進入了一個模式,我不知道如何擺脫困境。光標返回一個字符,一些鍵執行一些特殊命令,但我真正想要做的就是退出該模式,並能夠按Ctrl + U清除該行。如何退出zsh的ESC模式?

四處搜尋一直很艱難 - 我得到了逃脫角色的結果。

+0

像這樣的問題可能應該超級用戶而不是SO,順便說一句。 – calavicci

+0

@calavicci我不知道那個,謝謝。 –

回答

4

簡答:按a

中等答案:按a,然後輸入bindkey -e

很長的回答:像許多UNIX shell一樣,zsh具有類似emacs的模式和類似vi的模式。您處於vi-like模式,ESC將您帶出類似vi的插入模式。 a使您回到插入模式,光標位於當前字符之後。 (對不起,「模式」的兩種不同用途,但它是兩種情況下的公認術語)。沒有「ESC模式」),所以這不會再打擾你了。不幸的是,它不會繼續到你的下一個shell調用。 bindkey -v將從emacs模式切換回vi模式。

在沒有任何其他配置的情況下,zsh默認爲emacs模式,因此除非某個rc文件中有某些內容,否則可能的罪魁禍首是EDITOR變量是某種形式的vi,這會導致zsh默認爲vi模式。如果您不喜歡vi模式,那麼您應該搜索系統範圍或用戶特定配置的哪一部分導致zsh默認爲vi模式,並通過刪除它或在其中一個rc模式中覆蓋它來關閉它。文件。

+0

謝謝!很有趣的是,事實證明,vi模式給我帶來了麻煩,考慮到我已經成爲vim粉絲一段時間了。 –

+0

第一次也讓我大吃一驚,多年來我一直是一個頑固的v mer。 ;) – calavicci

+0

我已經使用了'vim'超過20年了,並且仍然更喜歡在vi模式下的shell中的Emacs鍵綁定。 – chepner