我在 vim 状态行中添加了电池功能这是一个链接。它在 vim 中正确显示我的电池,如果我运行$ acpi | grep -oP "(\d+)%"
它会返回一些数字,后跟百分号(如预期)。我决定更新我的,zshrc
因为它的打印效果比cut
我使用的更好:
bat () { acpi | grep -oP "(\d+)%" }
PROMPT="%t | $(bat) | %d
$ "
然而,我最终得到的是:
7:22PM | 89[m | /home/rain
$
如何将[m
打印为%
?或者我可以完全放弃它并只打印数字吗?
答案1
这[m
可能是 ANSI 转义码的尾部\e[m
(= 重置为正常颜色和属性,短格式),并且初始 ESC 字符 ( \e
) 被剥离。
我的猜测是,grep
当交互运行时,您正在对匹配的字符串进行着色,并且当作为 shell 函数的一部分运行时,交互性检测会失败,该 shell 函数的输出成为提示的一部分。
输出中的百分号会触发提示中的特殊处理,如果%\e
没有任何意义,则将其删除。
尝试bat
像这样定义你的函数:
bat () { acpi | grep --color=never -oP "(\d+)%" }