是否可以在 zsh 的插入模式下使用两个字符(例如 ^tm)进行命令绑定?

是否可以在 zsh 的插入模式下使用两个字符(例如 ^tm)进行命令绑定?

在我当前的.zshrc文件中我有

bindkey -M viins -s '^tm' '^[Iman ^[Ela ^[d$'

但这不起作用,但是当我删除时从快捷方式,现在只有^t快捷方式可以工作。我想要它^tm

有任何想法吗?

答案1

它有效,但你必须快。您可以绑定字符序列,但想法是将其绑定到发送字符序列。

例如,当您按下该Home键时,许多终端会发送^[[1~.第一个字符是 ESC,它也在 vi 插入模式下绑定。因此,重要的是,绑定某些东西ESC[1~并不会ESC单独停止工作。

zsh使用该$KEYTIMEOUT设置(默认为 0.4 秒)来决定等待下一个按键的时间,以决定是按多字符按键还是按顺序按多个单字符按键。

现在,如果没有其他以 开头的键映射^T,特别是如果没有^T单独的映射,则zsh可以无限期地等待该m^T恰好映射到self-insert默认的 viins 键盘映射中,这不是很有用。所以你可以简单地删除它:

bindkey -Mviins -r '^T'

哪个应该做你想做的事。

顺便说一句,您可能想将其绑定到run-help小部件。

相关内容