我已将 zsh 配置为使用 vi 键绑定。我注意到“逃逸”的一些意外行为。在 vim 中(我还没有测试过 vanilla vi),如果我按两次转义,我可以按一次“i”返回插入模式。在 zsh 中,如果我碰巧按了两次转义,按“i”不会使我返回到插入模式,我必须按两次。另一个例子出现在导航中。如果我点击转义一次,我可以按预期使用 '^' 和 '$'。但是,如果我不小心按了两次(或更多次)转义键,它们将无法工作,直到我返回插入模式并再次转义。
我是否以某种方式错误地配置了 zsh,或者这只是 zsh 的 vi 模拟中的已知差异?
我也明白了。之前没有注意到这一点,因为我通常在 shell 中使用 emacs 绑定。似乎在默认绑定下,在 vicmd 模式下使用转义键会吃掉下一个字符。这看起来可能是处理未定义键的错误。
我可以通过在 vicmd 模式下为转义键定义 noop 绑定来解决这个问题:
noop () { }
zle -N noop
bindkey -M vicmd '\e' noop
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
512 次 |
最近记录: |