ZSH プロンプトは「%」の代わりに「[m」」を出力します。

ZSH プロンプトは「%」の代わりに「[m」」を出力します。

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

これはおそらくANSIエスケープコード(=通常の色と属性にリセット、省略)[mの終わりであり、最初のESC文字()は削除されます。\e[m\e

私の考えでは、grep対話型で実行するときに一致する文字列に色を付け、出力がプロンプトの一部となるシェル関数の一部として実行すると、対話型検出が失敗するようです。

出力のパーセント記号は、プロンプトで特別な処理をトリガーするか、%\e意味がない場合は削除されます。

bat次のように関数を定義してみてください。

bat () { acpi | grep --color=never -oP "(\d+)%" }

関連情報