Zsh에 사용자 지정 프롬프트가 있습니다. 마지막에 마지막 명령이 성공했는지 실패했는지에 따라 마지막 문자를 빨간색 또는 녹색으로 채색합니다. 그러나 이렇게하면 이전 명령으로 돌아가서 편집 할 수 없습니다.
다음은 프롬프트 코드입니다.
%{%F%(?.$fg[green].$fg[red])>%f%}
워크 플로의 예 :
> printf "%s\n" "This is a very long printf. How long is it? It's so very very long that it wraps onto the next line."
> printf "%s\n" "This is a very long printf. How long is it It's so very very long that it wraps onto the next line."
This is a very long printf. How long iis it It's so very very long that it wraps onto the next line.
내가 입력하려는 실제 명령에 프롬프트가 넘치도록 색상 코드를 어떻게 든 종료하지 않는다고 가정합니다. 프롬프트가 새 줄로 바뀔 때만 오작동합니다. 누구든지 내 프롬프트의 문제점을 볼 수 있습니까?
이 코드 스 니펫이 없어도 나머지 프롬프트는 정상이며 예상대로 작동 함을 확인했습니다.
zsh
프롬프트가 실제로 얼마나 긴지 혼란스러워합니다. 쉘은 자체 %F
이스케이프가 프롬프트의 화면 길이에 영향을주지 않는다는 것을 이미 알고 있습니다 . 에서 %{...%}
비슷하게하는 것처럼 포장 할 필요가 없습니다 bash
.
PS1="%F%(?.$fg[green].$fg[red])>%f"
fg
실제 터미널 특정 이스케이프 시퀀스가 포함 된 경우 는 필요 %{...%}
하지만 사용 %F
하는 방법이 아니므로 전혀 사용 하지 않습니다. 따라서 실제로 다음과 같은 것이 필요할 수 있습니다.
PS1="%(?.%{$fg[green]%}.%{$fg[red]}%})>%f"
그러나 별도의 색상 배열이 필요하지 않습니다. zsh
그들도 내장되어 있습니다.
PS1='%(?.%F{green}.%F{red})>%f '
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다