Избегайте рекурсии в командной строке zsh - PullRequest
3 голосов
/ 13 июля 2011

ОК, я переключился на zsh несколько часов назад, и я нахожусь в огромной конфигурации, дурачащейся вокруг веселья, но это, вероятно, слишком большой укус для меня:

Я хотел бы сделатьautopairnig разделителя, например, type (и он вставляет (). Первый сбой:

bindkey -s "(" "()"

Второй сбой:

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

Я думаю, что оба сбоя, потому что Zsh пытаетсяrecurse на вставке "(" (-U, кажется, говорит об этом явно). Есть ли способ избежать этого? Подстановка echo -ne "()" в 1-й строке функции, конечно, избегает этого, но не редактируется ... Любые идеи, какпринудительно вставить?

Бонусные баллы (образно говоря :)): я бы хотел установить курсор в скобках после вставки. zle backward-char в моей функции, однако, ничего не делает ...

Только представьте, как это может быть здорово! Спасибо!

1 Ответ

6 голосов
/ 13 июля 2011
function autopair()
{
    LBUFFER+="("
    RBUFFER=")$RBUFFER"
}
zle -N autopair autopair
bindkey "(" autopair
...