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+)%" }

관련 정보