$ {#$ {(S %%)字符串//(\%([KF1] |)\ {* \} | \%[Bbkf])}}是什么意思

时间:2010-02-15 16:04:53

标签: zsh prompt

我在adam2 zsh提示符中找到了这个,我不知道它意味着什么。显然它会计算“字符串”的长度,但它是如何做到的,超出了我的范围。

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

2 个答案:

答案 0 :(得分:4)

您的模式在删除某些ANSI样式的字符格式后计算字符串的长度。

约:

  • ${# } - 篇

  • ${ } - 嵌套

  • (S%%) - 从结尾开始搜索子字符串

  • // - 全局替换(在这种情况下为删除,因为之后没有斜线)

  • ( ) - 捕获组

  • \% - 字面百分号

  • [KF1] - 字符列表:K =开始背景色,F =开始前景色

  • [Bbkf] - 字符列表:B =开始加粗,b =结束粗体,k =结束背景,f =结束前景

然后我迷路了。

答案 1 :(得分:1)

我用Google搜索“zsh prompt regex”,找到了this。它说$#计算内容的长度。该链接还有比我找到的zsh user's guide更多的信息。