如何在 emacs 模式和 vi 模式之间进行 zsh 键绑定?

How to make zsh keybind between emacs mode and vi mode?

我想绑定一个键来切换emacs模式和vi模式,我使用oh-my-zsh插件(vi-mode)。

我试过了Is there a way to switch Bash or zsh from Emacs mode to vi mode with a keystroke?

我也尝试像
那样绑定密钥 bindkey '^[e' 'set -o emacs'
bindkey '^[v' 'set -o vi'

但这对我不起作用。

有什么方法可以切换 vi/emacs 或键绑定来设置键盘映射?
非常感谢!

bindkey 用于将键绑定到 ZLE 小部件而不是任何随机命令。所以你所猜测的是行不通的。您可以编写自定义 ZLE 小部件来切换键盘映射:

select-emacs() { set -o emacs }
zle -N select-emacs
bindkey '^[e' select-emacs

实际上,我不推荐这个。如果您想要混合方法,最好是 select emacs 模式,但将键绑定到 vi-cmd-mode。实际上 Ctrl-X,Ctrl-V 是默认绑定到这个的。您甚至可以将转义键绑定到 vi-cmd-mode - 其中 emacs 键序列涉及初始转义键,大部分可以用 Alt 代替。如果您习惯于使用实际的转义键键入它,您可以在 vi 命令模式下将其替换为自定义小部件。