Что означает $ {# $ {(S %%) string // (\% ([KF1] |) \ {* \} | \% [Bbkf])}} - PullRequest
2 голосов
/ 15 февраля 2010

Я нашел это в приглашении adam2 zsh, и я понятия не имею, что это значит. Видимо, он считает длину «строки», но то, как она это делает, мне не подходит.

${#${(S%%)string//(\%([KF1]|)\{*\}|\%[Bbkf])}}

Ответы [ 2 ]

4 голосов
/ 15 февраля 2010

Ваш шаблон считает длину строки после удаления некоторых форматов символов в стиле ANSI.

Приблизительно:

  • ${# } - длина

  • ${ } - вложенный

  • (S%%) - поиск подстрок, начинающихся с конца

  • // - заменить глобально (в этом случае удалить, так как после этого нет косой черты)

  • ( ) - группа захвата

  • \% - буквальный знак процента

  • [KF1] - список символов: K = начальный цвет фона, F = начальный цвет переднего плана

  • [Bbkf] - список символов: B = начальный полужирный, b = конечный полужирный, k = конечный фон, f = конечный передний план

А потом я заблудился.

1 голос
/ 15 февраля 2010

Я погуглил "zsh prompt regex" и нашел this . Он говорит, что $ # считает длину содержимого. Эта ссылка также содержит больше информации, чем zsh руководство пользователя , которое я нашел.

...