如何在 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

相关内容