Я нашел это в приглашении adam2 zsh, и я понятия не имею, что это значит. Видимо, он считает длину «строки», но то, как она это делает, мне не подходит.
${#${(S%%)string//(\%([KF1]|)\{*\}|\%[Bbkf])}}
Ваш шаблон считает длину строки после удаления некоторых форматов символов в стиле ANSI.
Приблизительно:
${# } - длина
${# }
${ } - вложенный
${ }
(S%%) - поиск подстрок, начинающихся с конца
(S%%)
// - заменить глобально (в этом случае удалить, так как после этого нет косой черты)
//
( ) - группа захвата
( )
\% - буквальный знак процента
\%
[KF1] - список символов: K = начальный цвет фона, F = начальный цвет переднего плана
[KF1]
[Bbkf] - список символов: B = начальный полужирный, b = конечный полужирный, k = конечный фон, f = конечный передний план
[Bbkf]
А потом я заблудился.
Я погуглил "zsh prompt regex" и нашел this . Он говорит, что $ # считает длину содержимого. Эта ссылка также содержит больше информации, чем zsh руководство пользователя , которое я нашел.