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%}%% "
지원되는 색상 : 컴퓨터마다 유효한 옵션이 다를 수 있지만
빨간색, 파란색, 녹색, 청록색, 노란색, 자홍색, 흑백 ( 이 답변에서 ).
색상 코드 (및 기타 인쇄 할 수없는 문자)를 %{....%}
. 이것은 텍스트 줄 바꿈이 올바르게 작동하기위한 것입니다.
또한, 여기이가에서 디렉토리가 트리밍 작업을 얻을 수있는 방법입니다 여기 .
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 문서 를 참조하십시오.
zsh5 (Debian Jessie의 기본값)를 사용하면 모든 솔루션이 작동한다는 것을 알았습니다.
$'\e[00m
$fg[white]
$fg{white}
이제 문제가 있습니다. 커서를 움직여서 탭할 때 (자동 완성을 위해)보기 흉한 데칼이 생깁니다. 해결책은 단순히 이스케이프 시퀀스를 %{FOOBAR%}
. 이것을 이해하는 데 시간이 걸렸습니다. 2 차 및 3 차 솔루션의 경우로드 colors
모듈이 필수입니다. 첫 번째 솔루션을 읽기 쉽게 유지하려면 사용하는 색상에 대한 변수를 정의하십시오.
man zshall 및 PROMPT EXPANSION 검색
여기에서 기존 답변을 읽은 후 몇 가지가 충돌합니다. 나는 zsh 4.2 및 5+를 실행하는 시스템에서 다양한 접근 방식을 시도했으며 이러한 답변이 충돌하는 이유는 그들이 대상으로하는 ZSH 버전을 말하지 않기 때문이라는 것을 발견했습니다. 버전마다 다른 구문을 사용하며 일부는 다양한 자동로드가 필요합니다.
따라서 가장 좋은 방법은 zshall을 사용하고 PROMPT EXPANSION을 검색하여 특정 zsh 설치에 대한 모든 규칙을 찾는 것입니다. 주석에서 "우분투 11.04 또는 10.4 또는 OSX를 사용합니다"와 같은 내용은 사용중인 ZSH 버전이 명확하지 않기 때문에 그다지 의미가 없습니다. Ubuntu 11.04는 ubuntu 10.04보다 최신 버전의 ZSH를 의미하지 않습니다. 이전 버전이 설치된 이유는 여러 가지가있을 수 있습니다. 그 문제에 대해 ZSH의 최신 버전은 ZSH의 버전을 알지 않고 사용할 구문을 의미하지 않습니다.
'programing tip' 카테고리의 다른 글
어셈블리에서 프로그래밍하는 이유는 무엇입니까? (0) | 2020.09.15 |
---|---|
수평 LinearLayout에 (수직) 구분선을 추가하는 방법은 무엇입니까? (0) | 2020.09.15 |
단위 테스트에서 HttpClient 모의 (0) | 2020.09.15 |
browserify 오류 / usr / bin / env : 노드 : 해당 파일 또는 디렉토리가 없습니다. (0) | 2020.09.15 |
'python'은 내부 또는 외부 명령으로 인식되지 않습니다. (0) | 2020.09.15 |