[colors] zsh에서 내 프롬프트의 색상을 어떻게 변경할 수 있습니까 (일반 텍스트와 다름)?

명령 줄에서 출력의 시작과 끝을 더 잘 인식하기 위해 프롬프트의 색상을 변경하여 프로그램 출력과 눈에 띄게 다르게하고 싶습니다. 내가 zsh를 사용할 때 누군가 나에게 힌트를 줄 수 있습니까?



답변

다음은 빨간색 프롬프트를 설정하는 방법의 예입니다.

PS1=$'\e[0;31m$ \e[0m'

마법은 \e[0;31m(빨간색 전경 \e[0m켜기 )와 (캐릭터 속성 끄기)입니다. 이를 이스케이프 시퀀스라고합니다. 다른 이스케이프 시퀀스는 절대 커서 위치, 색상, 창의 제목 표시 줄 변경 등 다양한 결과를 제공합니다.

이스케이프 시퀀스에 대한 자세한 내용 은 ANSI 이스케이프 코드에 대한 wikipedia 항목을 참조하십시오 .


답변

이것을 넣으십시오 ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "

지원 색상 :
red, blue, green, cyan, yellow, magenta, black, white(에서 이 대답 ) 다른 컴퓨터는 다른 유효한 옵션이있을 수 있지만.

색상 코드 (및 기타 인쇄 할 수없는 문자)를 %{....%}. 이것은 텍스트 줄 바꿈이 올바르게 작동하기위한 것입니다.

또한, 여기이가에서 디렉토리가 트리밍 작업을 얻을 수있는 방법입니다 여기 .

PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "


답변

Zsh에는 컬러 프롬프트가 내장되어 있습니다. 시험

autoload -U promptinit && promptinit

그런 다음 prompt -l사용 가능한 프롬프트 를 나열 -p fire하고 “fire”프롬프트를 미리보고 -s fire설정합니다.

프롬프트를 추가 할 준비가되면 위의 자동로드 행 아래에 다음과 같이 추가하십시오.

prompt fade red


답변

autoload -U colors && colors더 이상 필요 하지 않으며 간단하게 할 수 있습니다.

PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "

FireDude의 답변 과 동일한 결과를 얻으려면 . 자세한 정보는 ZSH 문서 를 참조하십시오.


답변

사용 가능한 색상 :

for i in {1..256}; do print -P "%F{$i}Color : $i"; done;

                                      


사용 가능한 변수 :

  • %F{118} (1 ~ 256)
  • $FG[018] (1 ~ 256)
  • $fg[magenta] (마젠타, 빨강, 흰색, 노랑, 검정, 파랑, 청록, 녹색)

프롬프트 예 :

PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'

포착

PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} '

포착


설치:

변수 정의 (PS1 / PROMPT)를 추가해야합니다. ~/.zshrc

현재 프롬프트에서 PS1 변수를 다시 정의하여 즉시 테스트 할 수도 있습니다 (변경 사항은 저장되지 않음).


답변

위의 Bryan Oakley의 답변은 이미 지적 된 바와 같이 결함이 있으며 Andrew Marshall이 제공 한 솔루션은 결함이 없지만 사용 된 색상을 너무 많이 사용자 정의하는 것이 분명하지 않습니다.

macOS Catalina가 지금부터 zsh를 기본 셸로 요청함에 따라 더 많은 사람들이 프롬프트를 사용자 지정하고 싶을 수 있으며 답변을 위해 여기에 올 수 있습니다. 그래서 나는 더 넓은 요약을 제공하고 더 많은 사용자 정의를 허용하는 매우 밀접하게 관련된 다른 개념을 다루려고 노력할 것이라고 생각했습니다.

다양한 색상을위한 3 자리 코드.
우선, 여기에서 다양한 색상에 대한 3 자리 코드를 찾을 수 있습니다 : https://unix.stackexchange.com/a/124409/194343 . 예를 들어, 214는 일종의 주황색입니다.

전경 및 배경.
다른 주요 정보는 F oreground 및 bac K 바탕색에 대해 각각 FK로 원하는 것을 정의 할 수 있다는 것 입니다. 소스는 시각 효과에 대한 zsh 매뉴얼입니다 : http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects

예를 들어 다음 두 명령은

autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "

호스트 이름은 검은 색 바탕에 주황색으로 표시하고, 검은 색 바탕에 흰색으로 된 콜론, 검은 색 바탕에 밝은 파란색으로 표시된 현재 작업 디렉토리, 검은 색 바탕에 흰색으로 표시된 달러 기호를 표시합니다.

더 많은 관련 정보는 아래에서 찾을 수 있습니다.

오른쪽에 프롬프트 정보. 예를 들어 타임 스탬프를 추가합니다. https://superuser.com/a/1251045/290299를 참조 하십시오 . 물론, 예를 들어 다음과 같이 밝은 파란색 / 보라색을 띠는 색상으로 색상 코드를 지정할 수 있습니다.

RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"

색상에 대한 ls. ls에 대한 설명서를 읽은 후 예를 들어 ls다음 두 명령 을 사용하여 색상을 활성화 할 수 있습니다 .

export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad

누군가가 포트를 설치하기 위해 마지막으로, 나는 내 구성을 행복으로 테스트되지 않았 음을 마지막 발언으로 또 다른 수단이 될 수 coreutils에서 MacPorts를 다음 사용 gdircolors: 소스 ( https://unix.stackexchange.com/a/174596 / 194343 ). (위의 모든 내용은 일상 생활을 훨씬 더 재미 있고 쉽게 처리 할 수있는 관련 항목이므로 나중에이 마지막 부분을 편집 할 수 있습니다.)


답변

zsh5 (Debian Jessie의 기본값)를 사용하면 모든 솔루션이 작동한다는 것을 알았습니다.

  • $'\e[00m
  • $fg[white]
  • $fg{white}

이제 문제가 있습니다. 커서를 움직여 탭할 때 (자동 완성을 위해)보기 흉한 데칼이 생깁니다. 해결책은 단순히 이스케이프 시퀀스를 %{FOOBAR%}. 이것을 이해하는 데 시간이 걸렸습니다. 2 차 및 3 차 솔루션의 경우로드 colors모듈이 필수입니다. 첫 번째 솔루션을 읽기 쉽게 유지하려면 사용하는 색상에 대한 변수를 정의하십시오.