これはadam2zshプロンプトで見つかりましたが、それが何を意味するのかわかりません。どうやらそれは「文字列」の長さを数えます、しかしそれがどのようにそれをするかは私を超えています。
${#${(S%%)string//(\%([KF1]|)\{*\}|\%[Bbkf])}}
パターンは、ANSIスタイルの文字フォーマットを取り除いた後の文字列の長さをカウントします。
約:
${# }
- 長さ
${ }
-ネストされた
(S%%)
-末尾から始まる部分文字列を検索します
//
-グローバルに置換します(この場合、後でスラッシュがないため、削除します)
( )
-キャプチャグループ
\%
-文字通りのパーセント記号
[KF1]
-文字リスト:K =背景色の開始、F=前景色の開始
[Bbkf]
-文字リスト:B =太字で開始、b =太字で終了、k =背景を終了、f=前景を終了
そして、私は道に迷います。
「zshpromptregex」をグーグルで検索したところ、これが見つかりました。$#はコンテンツの長さをカウントすると書かれています。そのリンクには、私が見つけたzshユーザーガイドよりも多くの情報があります。