我在 adam2 zsh 提示符中找到了这个,我不知道它是什么意思。显然它计算了“字符串”的长度,但它是如何做到的却超出了我的范围。
${#${(S%%)string//(\%([KF1]|)\{*\}|\%[Bbkf])}}
您的模式在去除一些 ANSI 样式的字符格式后计算字符串的长度。
大约:
${# }
- 长度
${ }
- 嵌套
(S%%)
- 从末尾开始搜索子字符串
//
- 全局替换(在这种情况下删除,因为后面没有斜线)
( )
- 捕获组
\%
- 文字百分号
[KF1]
- 字符列表:K=开始背景色,F=开始前景色
[Bbkf]
- 字符列表:B=开始粗体,b=结束粗体,k=结束背景,f=结束前景
然后我迷路了。
我用谷歌搜索了“zsh prompt regex”,发现了这个。它说 $# 计算内容的长度。该链接还包含比我找到的zsh 用户指南更多的信息。