好吧,我几个小时前切换到 zsh 并且我在疯狂的配置中大肆欺骗,但这对我来说可能太大了:

我想做一个分隔符自动配对,例如键入 ( 并插入 ()。首先失败:
bindkey -s "(" "()"
第二次失败:

function autopair () {
zle -U "()"
zle backward-char
}
zle -N autopair autopair
bindkey "(" autopair

我认为两者都失败了,因为 zsh 试图在“(”插入(-U 似乎明确说明这一点)上进行递归。有没有办法避免这种情况?在函数的第一行替换 echo -ne "()" 当然可以避免这种情况,但无法编辑。 . 任何想法如何强制插入?

加分点(形象地说:)):我想在插入后将光标设置在括号之间。然而,我函数中的 zle backward-char 没有做任何事情......

想象一下这有多棒!谢谢!

最佳答案

function autopair()
{
    LBUFFER+="("
    RBUFFER=")$RBUFFER"
}
zle -N autopair autopair
bindkey "(" autopair

关于shell - 避免在 zsh 命令行中递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6673280/

10-12 18:25