Zsh

在 ZSH 中設置新的鍵綁定會刪除預設鍵綁定

  • November 15, 2019

我在末尾添加了以下程式碼.zshrc

export VISUAL=vim
autoload edit-command-line; zle -N edit-command-line
bindkey -M vicmd v edit-command-line

當我重新啟動 shell 時,它可以正常工作,但所有以前的鍵綁定都停止工作。

例如,我無法搜尋歷史記錄 ( CTRL-R ),也無法在命令行 ( CTRL-A/E ) 中移動。

也許我把這些命令放在了錯誤的地方?

任何幫助,非常感謝!

當您設置VISUAL為包含 的字元串vi時,zsh 使用 Vi鍵映射( vicmd, viins, …) 和 Vi 樣式的預設鍵綁定。否則 zsh 使用emacs帶有 Emacs 樣式預設鍵綁定的鍵映射。

如果你想在 shell 中使用 Emacs 風格的命令行編輯,但使用 Vim 作為你最喜歡的編輯器,添加bindkey -e到你的.zshrc.

如果你想使用 Vi 風格的命令行編輯,但使用 Emacs 風格的預設綁定,你必須自己定義這些綁定。^R在 Emacs 模式下執行history-incremental-search-backward,在 Vi 模式下沒有綁定。在 Vi 命令模式下搜尋的預設鍵綁定是/forvi-history-search-backward?for vi-history-search-forward。要移動到命令行的開頭或結尾,您可以像往常一樣使用0,^和。$

引用自:https://unix.stackexchange.com/questions/552387