1. ホーム
  2. zsh

[解決済み] zsh で `LBUFFER%%(#m)[_a-zA-Z0-9]#` は何をするのですか?

2022-02-08 01:40:30

質問

の次のコードの意味を理解するのに手助けが必要です。 この のドキュメントの意味を教えてください。

LBUFFER=${LBUFFER%%(#m)[_a-zA-Z0-9]#}
LBUFFER+=${abbreviations[$MATCH]:-$MATCH}

ということを知りました。 LBUFFER はカーソルから左を含みます。しかし、混乱することが3つあります。

  1. は何ですか? %% は何をしているのでしょうか?をエスケープしているのでしょうか? % ?
  2. とは何ですか? (#m)[_a-zA-Z0-9]# はどうするのでしょうか?のようなものでしょうか? m/[_a-zA-Z0-9]/ をPerlで表示できますか?もしそうなら、マッチした文字列はどうされるのですか?
  3. とは何ですか? :- の部分は、2行目で何をしているのでしょうか?

ありがとうございます。

解決方法は?

  1. ${a%%b} の最も長い出現回数を削除します。 b (正規表現でも可)、から a .

  2. [_a-zA-Z0-9]# は、英数字にマッチする正規表現です([ ]の間にあるもので示されます)。 [] ) 0回以上 (で指定される)。 # グロブ演算子)

  3. (#m)$MATCH という変数で、前の正規表現を評価した後に

  4. 1, 2, 3 の組み合わせは、末尾の英数字の伸縮を意味します。 $LBUFFER は削除され $MATCH .

  5. ${a:-b} 作る a と同じです。 b 場合のみ a が定義されていない場合。

もっと詳しく知りたい方は 拡張編 のマニュアルを参照してください。