
假設我想在 vicmd 模式下R綁定。redo
這有效。
bindkey -a r redo
如果我把它改成這樣,它就不起作用了。
bindkey -a rr redo
我嘗試過不同的事情但沒有成功。這不可能嗎?我知道應該可以在 emacs 模式下將序列綁定到鍵,但是您可以在 vi 模式下對字母執行相同的操作嗎?
答案1
在標準 vicmd 模式下R已經綁定到vi-replace-chars
.
所以當你定義R+R到redo
with
bindkey -a rr redo
R按下時,Zsh 可以執行兩種可能的操作
- 將其解釋為命令
vi-replace-chars
或 - 等待第二個字符,然後解釋命令
redo
Zsh 中匹配鍵盤命令的演算法傾向於短命令,因此它將始終使用 1. 操作。
R要阻止 Zsh 執行此操作,您首先需要刪除with的綁定
bindkey -a -r r
然後添加您的新選項
bindkey -a rr redo
然後您還可以vi-replace-chars
添加
bindkey -a re vi-replace-chars