避免在zsh命令行中递归

use*_*592 3 shell zsh zshrc

好吧,我几个小时前切换到zsh而且我在一个巨大的配置 - 傻瓜疯狂,但这对我来说可能是一个太大的咬合:

我想做一个分隔符autopairnig,例如type(并且它insert().首先失败:

bindkey -s "(" "()"

第二次失败:

function autopair () {
zle -U "()"
zle backward-char
}
zle -N autopair autopair
bindkey "(" autopair
Run Code Online (Sandbox Code Playgroud)

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

奖励点(比喻说:)):我想在插入后将光标设置在括号之间.然而zle backward-char在我的功能中没有做任何事......

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

ZyX*_*ZyX 6

function autopair()
{
    LBUFFER+="("
    RBUFFER=")$RBUFFER"
}
zle -N autopair autopair
bindkey "(" autopair
Run Code Online (Sandbox Code Playgroud)

  • 我的天哪,我可以成为这样一个白痴!(为了我的辩护,我今天早些时候发生了可怕的匆忙......).是的,这是有效的,并且超出了测量范围!非常感谢! (2认同)