使用zsh時,我有時會不小心按Escape退出習慣,期望它像在Windows中一樣清除整條線。相反,它進入了一個模式,我不知道如何擺脫困境。光標返回一個字符,一些鍵執行一些特殊命令,但我真正想要做的就是退出該模式,並能夠按Ctrl + U清除該行。如何退出zsh的ESC模式?
四處搜尋一直很艱難 - 我得到了逃脫角色的結果。
使用zsh時,我有時會不小心按Escape退出習慣,期望它像在Windows中一樣清除整條線。相反,它進入了一個模式,我不知道如何擺脫困境。光標返回一個字符,一些鍵執行一些特殊命令,但我真正想要做的就是退出該模式,並能夠按Ctrl + U清除該行。如何退出zsh的ESC模式?
四處搜尋一直很艱難 - 我得到了逃脫角色的結果。
簡答:按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模式中覆蓋它來關閉它。文件。
像這樣的問題可能應該超級用戶而不是SO,順便說一句。 – calavicci
@calavicci我不知道那個,謝謝。 –