如何在 vi cmd 模式 zsh 中將按鍵序列綁定到小部件?

如何在 vi cmd 模式 zsh 中將按鍵序列綁定到小部件?

假設我想在 vicmd 模式下R綁定。redo

這有效。

bindkey -a r redo

如果我把它改成這樣,它就不起作用了。

bindkey -a rr redo

我嘗試過不同的事情但沒有成功。這不可能嗎?我知道應該可以在 emacs 模式下將序列綁定到鍵,但是您可以在 vi 模式下對字母執行相同的操作嗎?

答案1

在標準 vicmd 模式下R已經綁定到vi-replace-chars.

所以當你定義R+Rredowith

bindkey -a rr redo

R按下時,Zsh 可以執行兩種可能的操作

  1. 將其解釋為命令vi-replace-chars
  2. 等待第二個字符,然後解釋命令redo

Zsh 中匹配鍵盤命令的演算法傾向於短命令,因此它將始終使用 1. 操作。

R要阻止 Zsh 執行此操作,您首先需要刪除with的綁定

bindkey -a -r r

然後添加您的新選項

bindkey -a rr redo

然後您還可以vi-replace-chars添加

bindkey -a re vi-replace-chars

相關內容