避免在zsh命令行中递归

时间:2011-07-13 02:00:34

标签: shell zsh zshrc

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

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

bindkey -s "(" "()"

第二次失败:

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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