Shell
如何配置 ZSH 的 vi 模式以保持命令之間的狀態?
我知道如何將 ZSH 的預設行編輯器設置為使用類似 vi 的鍵綁定…
bindkeys -v
…甚至預設每個新提示都處於命令模式而不是預設插入 mod…
zle-line-init() { zle -K vicmd; } zle -N zle-line-init
…而且大多數時候我更喜歡這種行為。但是,它使一些事情變得非常尷尬。例如,將多行命令粘貼到終端以立即執行幾乎是不可能的。
**如何配置它以使模式保持不變?**我希望我執行一行時的任何模式都應該是下一行的預設模式。
也許像:
vicmd-accept() { prev_mode=vicmd; zle .accept-line } viins-accept() { prev_mode=viins; zle .accept-line } zle-line-init() { zle -K ${prev_mode:-viins} } zle -N viins-accept zle -N vicmd-accept zle -N zle-line-init bindkey -M viins \\r viins-accept bindkey -M vicmd \\r vicmd-accept
或者更簡單:
accept-line() { prev_mode=$KEYMAP; zle .accept-line } zle-line-init() { zle -K ${prev_mode:-viins} } zle -N accept-line zle -N zle-line-init