เพื่อให้จดจำการเริ่มต้นและจุดสิ้นสุดของเอาต์พุตบนบรรทัดคำสั่งได้ดีขึ้นฉันต้องการเปลี่ยนสีของพรอมต์เพื่อให้แตกต่างจากเอาต์พุตของโปรแกรมอย่างเห็นได้ชัด ในขณะที่ฉันใช้ zsh ใครช่วยให้คำแนะนำฉันได้ไหม
เพื่อให้จดจำการเริ่มต้นและจุดสิ้นสุดของเอาต์พุตบนบรรทัดคำสั่งได้ดีขึ้นฉันต้องการเปลี่ยนสีของพรอมต์เพื่อให้แตกต่างจากเอาต์พุตของโปรแกรมอย่างเห็นได้ชัด ในขณะที่ฉันใช้ zsh ใครช่วยให้คำแนะนำฉันได้ไหม
คำตอบ:
นี่คือตัวอย่างวิธีตั้งค่าพรอมต์สีแดง:
PS1=$'\e[0;31m$ \e[0m'
เวทมนตร์คือ\e[0;31m
(เปิดพื้นหน้าสีแดง) และ\e[0m
(ปิดคุณลักษณะของอักขระ) สิ่งเหล่านี้เรียกว่าลำดับการหลบหนี ลำดับการหลีกเลี่ยงที่แตกต่างกันให้ผลลัพธ์ที่แตกต่างกันตั้งแต่การวางตำแหน่งเคอร์เซอร์แบบสัมบูรณ์ไปจนถึงสีไปจนถึงความสามารถในการเปลี่ยนแถบหัวเรื่องของหน้าต่างของคุณและอื่น ๆ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับลำดับการหลบหนีโปรดดูรายการวิกิพีเดียในรหัสการหลีกเลี่ยง ANSI
ใส่สิ่งนี้ใน~/.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: colors: function definition file not found
%{...%}
หมายความว่าเนื้อหาจะตีความว่าเป็นลำดับหนีตัวอักษรเพื่อให้เคอร์เซอร์เคยชินย้ายในขณะที่พิมพ์ลำดับ หากคุณไม่ใช้สิ่งนี้รหัสสีสามารถเลื่อนเคอร์เซอร์และสร้างเอฟเฟกต์ที่ไม่ต้องการได้ นี่คือเอกสารในVisual Effects
ส่วนในzshmisc man page
Zsh มาพร้อมกับพรอมต์สีในตัว ลอง
autoload -U promptinit && promptinit
จากนั้นprompt -l
แสดงรายการพร้อมต์ที่มี-p fire
แสดงตัวอย่างพรอมต์ "ไฟ" -s fire
ตั้งค่า
เมื่อคุณพร้อมที่จะเพิ่มข้อความแจ้งให้เพิ่มสิ่งนี้ใต้บรรทัดโหลดอัตโนมัติด้านบน:
prompt fade red
ฉันไม่คิดว่าสิ่งautoload -U colors && colors
นี้จำเป็นอีกต่อไปและสามารถทำได้:
PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "
เพื่อให้บรรลุผลเช่นเดียวกับคำตอบของ FireDude ดูเอกสาร ZSHสำหรับข้อมูลเพิ่มเติม
autoload -U colors && colors
autoload
ใน
autoload on
ไง?
autoload -U colors
นั่นหมายความว่า distro ของคุณมีอยู่แล้วในไฟล์เริ่มต้น 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และ bac Kเราสามารถกำหนดสิ่งที่ต้องการด้วยFและKตามลำดับ แหล่งที่มาเป็นคู่มือ 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%}
การแก้ปัญหาก็คือจะล้อมรอบลำดับหนีด้วย ใช้เวลาสักพักเพื่อคิดสิ่งนี้ สำหรับcolors
โมดูลการโหลดโซลูชันที่ 2 และ 3 เป็นข้อบังคับ เพื่อให้โซลูชันแรกสามารถอ่านได้เพียงกำหนดตัวแปรสำหรับสีที่คุณใช้
หากต้องการรับพร้อมต์ที่มีสีขึ้นอยู่กับสถานะการออกของคำสั่งสุดท้ายคุณสามารถใช้สิ่งนี้:
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
เพียงเพิ่มบรรทัดนี้ใน~/.zshrc
ไฟล์.
เอกสารแสดงรายการตัวยึดที่เป็นไปได้
ลองสิ่งที่ฉันชอบ: ใส่เข้าไป
~/.zshrc
บรรทัดนี้:
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
อย่าลืม
source ~/.zshrc
เพื่อทดสอบการเปลี่ยนแปลง
คุณสามารถเปลี่ยนสี / รหัสสีได้แน่นอน :-)
man zshall และค้นหา PROMPT EXPANSION
หลังจากอ่านคำตอบที่มีอยู่ที่นี่มีหลายคำที่ขัดแย้งกัน ฉันได้ลองใช้แนวทางต่างๆในระบบที่ใช้ zsh 4.2 และ 5+ และพบว่าสาเหตุที่คำตอบเหล่านี้ขัดแย้งกันคือพวกเขาไม่ได้บอกว่า ZSH รุ่นใดที่พวกเขากำหนดเป้าหมายไว้ เวอร์ชันต่างๆใช้ไวยากรณ์ที่แตกต่างกันสำหรับสิ่งนี้และบางเวอร์ชันต้องการการโหลดอัตโนมัติหลายแบบ
ดังนั้นทางออกที่ดีที่สุดคือการจัดการ zshall และค้นหา PROMPT EXPANSION เพื่อค้นหากฎทั้งหมดสำหรับการติดตั้ง zsh โดยเฉพาะของคุณ หมายเหตุในความคิดเห็นสิ่งต่างๆเช่น "ฉันใช้ Ubuntu 11.04 หรือ 10.4 หรือ OSX" ไม่มีความหมายมากนักเนื่องจากไม่ชัดเจนว่าคุณใช้ ZSH เวอร์ชันใด Ubuntu 11.04 ไม่ได้หมายความถึง ZSH เวอร์ชันใหม่กว่า ubuntu 10.04 อาจมีสาเหตุหลายประการที่ติดตั้งเวอร์ชันเก่า สำหรับเรื่องนั้น ZSH เวอร์ชันที่ใหม่กว่าไม่ได้หมายความว่าจะใช้ไวยากรณ์ใดโดยไม่ทราบว่าเป็น ZSH เวอร์ชันใด
เพื่อเสริมคำตอบทั้งหมดข้างต้นเคล็ดลับที่สะดวกอีกประการหนึ่งคือการตั้งค่าพรอมต์สีลงในฟังก์ชัน zsh คุณสามารถกำหนดตัวแปรโลคัลเพื่อแทนคำสั่งที่ยาวขึ้นเช่นrc=$reset_color
หรือกำหนดตัวแปรสีของคุณเอง อย่าลืมวางลงใน.zshrc
ไฟล์ของคุณและเรียกใช้ฟังก์ชันที่คุณกำหนดไว้:
# Coloured prompt
autoload -U colors && colors
function myprompt {
local rc=$reset_color
export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt