2011-07-13 16 views
3

OK、私は数時間前のzshに切り替え、私はまくるの周りに巨大なコンフィグ-だますでいますが、これはおそらく私にとっては大きすぎる一口です:避け再帰

私がしたいです区切り文字を自動区切りするにはタイプ(およびそれが挿入()最初に失敗:。

bindkey -s "(" "()"

第二には、失敗:zshのは、 "(" を挿入(-Uと言っているようだ上で再帰しようとするため

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

は、私は両方の失敗だと思いますこれを避ける方法はありますか?echo -ne "()"を関数の1行目に代入するのはもちろんこれを避けますが編集できません...挿入を強制する方法は?

ボーナスポイント(比喩的にはspeaキング:)):私は挿入後に括弧の間にカーソルを設定したいと思います。しかし、私の機能のzle backward-charは何もしません...

これがどれほど素晴らしいかもしれないと想像してみてください!ありがとう!

答えて

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

ありがとうございましたが、それは私のために動作しません...エラーは、ちょうど私が唯一の私の.zshrcにスニペットをコピー(およびそれを調達しました)「(」の後に何も挿入しません - 。または – user673592

+0

@ user673592 *あなたの関数*を置き換えてみてください。すでにあなたの質問にあったので、このすべてのものは書いていません。 – ZyX

+0

あなたの質問から2行) – ZyX