Powerlevel10k เป็นธีมสำหรับ Zsh โดยเน้นความเร็ว ความยืดหยุ่น และประสบการณ์นอกกรอบ
exec zsh
p10k configure
หากวิซาร์ดการกำหนดค่าไม่เริ่มทำงานโดยอัตโนมัติ พิมพ์ p10k configure
เพื่อเข้าถึงวิซาร์ดการกำหนดค่าในตัวจากเทอร์มินัลของคุณ
สไตล์ทั้งหมดยกเว้น Pure มีฟังก์ชันการทำงานที่เทียบเท่ากัน โดยจะแสดงข้อมูลเดียวกันและแตกต่างกันเฉพาะในการนำเสนอเท่านั้น
วิซาร์ดการกำหนดค่าจะสร้าง ~/.p10k.zsh
ตามความต้องการของคุณ การปรับแต่งพร้อมท์เพิ่มเติมสามารถทำได้โดยการแก้ไขไฟล์นี้ มีความคิดเห็นมากมายที่จะช่วยคุณสำรวจตัวเลือกการกำหนดค่า
เคล็ดลับ : ติดตั้งแบบอักษรที่แนะนำก่อนเรียก p10k configure
เพื่อปลดล็อกสไตล์พรอมต์ทั้งหมด
คำถามที่พบบ่อย:
การแก้ไขปัญหา :
เมื่อคุณกด ENTER ข้อความถัดไปจะปรากฏขึ้นทันที ด้วย Powerlevel10k จะไม่มีความล่าช้าทันที หากคุณติดตั้ง Cygwin บน Raspberry Pi ให้ใส่ cd
ลงในพื้นที่เก็บข้อมูล Linux Git และเปิดใช้งานส่วนพร้อมต์ให้เพียงพอเพื่อเติมบรรทัดพร้อมท์สี่บรรทัดบนทั้งสองด้านของหน้าจอ... เดี๋ยวก่อน นั่นมันบ้าไปแล้วและไม่มีใครเคยทำแบบนั้น คงเป็นไปไม่ได้เช่นกัน ประเด็นก็คือ พรอมต์ Powerlevel10k นั้นรวดเร็วเสมอ ไม่ว่าคุณจะทำอะไรก็ตาม!
โปรดทราบว่าผลกระทบของทุกคำสั่งจะสะท้อนให้เห็นทันทีในพรอมต์ถัดไป
สั่งการ | ตัวบ่งชี้พร้อมท์ | ความหมาย |
---|---|---|
timew start hack linux | ⌚ hack linux | เปิดใช้งานการติดตามเวลาใน Timewarrior |
touch xy | ?2 | ไฟล์ที่ไม่ได้ติดตาม 2 ไฟล์ใน Git repo |
rm COPYING | !1 | การเปลี่ยนแปลงแบบไม่มีขั้นตอน 1 รายการใน repo Git |
echo 3.7.3 >.python-version | ? 3.7.3 | เวอร์ชันหลามปัจจุบันใน pyenv |
ธีม Zsh อื่นๆ ที่สามารถแสดงข้อมูลเดียวกันได้อาจสร้าง prompt lag หรือ print prompt ที่ไม่สะท้อนสถานะปัจจุบันของระบบ แล้วรีเฟรชในภายหลัง ด้วย Powerlevel10k คุณจะได้รับข้อมูลที่รวดเร็ว และ ทันสมัย
FAQ : มันเร็วจริงเหรอ?
Powerlevel10k เข้าใจพารามิเตอร์การกำหนดค่า Powerlevel9k ทั้งหมด
การย้ายจาก Powerlevel9k ไปยัง Powerlevel10k เป็นกระบวนการที่ไม่ซับซ้อน พารามิเตอร์การกำหนดค่า POWERLEVEL9K
ทั้งหมดของคุณจะยังคงทำงาน Prompt จะดูเหมือนเดิม (เกือบ) แต่จะเร็วขึ้นมาก (แน่นอน)
คำถามที่พบบ่อย :
Powerlevel10k สามารถสร้างพรอมต์เดียวกันกับ Pure พิมพ์ p10k configure
และเลือก Pure style
คุณยังคงสามารถใช้คุณสมบัติ Powerlevel10k ได้ เช่น ข้อความแจ้งชั่วคราวหรือข้อความแจ้งทันทีเมื่อเล่นกีฬาสไตล์ Pure
~/.p10k.zsh
เพื่อปรับแต่งพรอมต์ ให้แก้ไข Powerlevel10k ไม่รู้จักพารามิเตอร์การกำหนดค่า Pure ดังนั้นคุณจะต้องใช้ POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
แทน PURE_CMD_MAX_EXEC_TIME=3
เป็นต้น พารามิเตอร์ที่เกี่ยวข้องทั้งหมดอยู่ใน ~/.p10k.zsh
ไฟล์นี้มีความคิดเห็นมากมายที่จะช่วยคุณนำทางผ่านมัน
คำถามที่พบบ่อย: รูปแบบพร้อมท์ที่ดีที่สุดในตัวช่วยสร้างการกำหนดค่าคืออะไร?
หาก ~/.zshrc
ของคุณโหลดปลั๊กอินจำนวนมาก หรือบางทีแค่ปลั๊กอินที่ช้าเพียงไม่กี่ตัว (เช่น pyenv หรือ nvm) คุณอาจสังเกตเห็นว่า Zsh ต้องใช้เวลาพอสมควรในการเริ่มต้น
Powerlevel10k สามารถลบความล่าช้าในการเริ่มต้น Zsh ได้แม้ว่าจะไม่ได้เกิดจากธีม ก็ตาม
คุณลักษณะนี้เรียกว่า พร้อมท์ทันที คุณต้องเปิดใช้งานอย่างชัดเจนผ่าน p10k configure
หรือด้วยตนเอง มันทำตามที่บอกไว้บนกระป๋อง - พิมพ์พร้อมท์ทันทีเมื่อเริ่มต้น Zsh ช่วยให้คุณสามารถเริ่มพิมพ์ในขณะที่ปลั๊กอินยังคงโหลดอยู่
ธีมอื่นๆ เพิ่ม ความล่าช้าในการเริ่มต้น Zsh - บ้างก็มาก บ้างก็เพียงเล็กน้อย Powerlevel10k จะลบออก ทันที
หากคุณสงสัยว่า Instant Prompt ทำงานอย่างไร โปรดดูส่วนนี้ใน zsh-bench
คำถามที่พบบ่อย: ฉันจะกำหนดค่าพร้อมท์ทันทีได้อย่างไร
ลักษณะการทำงานของคำสั่งบางคำสั่งขึ้นอยู่กับสภาพแวดล้อมโกลบอล ตัวอย่างเช่น kubectl run ...
รันอิมเมจบนคลัสเตอร์ที่กำหนดโดยบริบท kubernetes ปัจจุบัน หากคุณเปลี่ยนบริบทระหว่าง "prod" และ "test" บ่อยครั้ง คุณอาจต้องการแสดงบริบทปัจจุบันในพร้อมท์ Zsh หากคุณทำเช่นเดียวกันกับข้อมูลรับรอง AWS, Azure และ Google Cloud ข้อความแจ้งจะค่อนข้างหนาแน่น
เข้าสู่ แสดงตามคำสั่ง คุณลักษณะนี้ทำให้ส่วนของพร้อมท์ปรากฏขึ้นเฉพาะเมื่อเกี่ยวข้องกับคำสั่งที่คุณกำลังพิมพ์เท่านั้น
การกำหนดค่าที่สร้างโดย p10k configure
ใช้งานการแสดงตามคำสั่งสำหรับส่วนพร้อมท์หลายส่วนตามค่าเริ่มต้น นี่คือพารามิเตอร์ที่เกี่ยวข้องสำหรับบริบท kubernetes:
# Show prompt segment "kubecontext" only when the command you are typing invokes one of these tools.
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND= ' kubectl|helm|kubens '
หากต้องการปรับแต่งเมื่อมีการแสดงส่วนพร้อมต์ที่แตกต่างกัน ให้เปิด ~/.p10k.zsh
ค้นหา SHOW_ON_COMMAND
และลบพารามิเตอร์เหล่านี้ออกเพื่อแสดงส่วนที่ได้รับผลกระทบโดยไม่มีเงื่อนไข หรือเปลี่ยนค่า
เมื่อเปิดใช้งาน Transient Prompt ผ่าน p10k configure
Powerlevel10k จะตัดทอนทุกการแจ้งเตือนเมื่อยอมรับบรรทัดคำสั่ง
พรอมต์ชั่วคราวทำให้การคัดลอกและวางชุดคำสั่งจากการเลื่อนกลับของเทอร์มินัลทำได้ง่ายขึ้นมาก
เคล็ดลับ : หากคุณเปิดใช้งานพรอมต์ชั่วคราว ให้ใช้ประโยชน์จากพรอมต์สองบรรทัด คุณจะได้รับประโยชน์จากพื้นที่เพิ่มเติมสำหรับการพิมพ์คำสั่ง โดยไม่มีข้อเสียเปรียบตามปกติคือความหนาแน่นของ scrollback ที่ลดลง Sparse prompt (โดยมีบรรทัดว่างก่อน prompt) ยังใช้งานได้ดีเมื่อใช้ร่วมกับ transient prompt
ไดเร็กทอรีการทำงานปัจจุบันอาจเป็นส่วนพร้อมต์ที่สำคัญที่สุด Powerlevel10k ใช้ความยาวมากเพื่อเน้นส่วนที่สำคัญและตัดทอนโดยสูญเสียข้อมูลน้อยที่สุดเมื่อพื้นที่ในแนวนอนขาดแคลน
เมื่อไดเร็กทอรีเต็มไม่พอดี ส่วนซ้ายสุดจะถูกตัดทอนให้เหลือคำนำหน้าเฉพาะที่สั้นที่สุด ใน screencast จะกลายเป็น ~/work
~/wo
ไม่สามารถตัดทอนเป็น ~/w
ได้เพราะมันจะไม่ชัดเจน (มี ~/wireguard
เมื่อบันทึกเซสชัน) ส่วนถัดไป - projects
- กลายเป็น p
เนื่องจากไม่มีอะไรอื่นที่ขึ้นต้นด้วย p
ใน ~/work/
ส่วนไดเรกทอรีจะแสดงด้วยสีใดสีหนึ่งจากสามสี:
เคล็ดลับ : หากคุณคัดลอกและวางไดเร็กทอรีที่ถูกตัดทอนแล้วกด TAB ไดเร็กทอรี นั้นจะเสร็จสมบูรณ์เป็นต้นฉบับ
การแก้ไขปัญหา : ไดเรกทอรีมองเห็นได้ยากเมื่อใช้สไตล์ Rainbow
Powerlevel10k สามารถกำหนดค่าให้ดูเหมือนธีม Zsh อื่น ๆ ได้
มีการจำลอง Pure, Powerlevel9k และ Robbyrussell ในตัว หากต้องการจำลองรูปลักษณ์ของธีมอื่นๆ คุณจะต้องเขียนไฟล์การกำหนดค่าที่เหมาะสม วิธีที่ดีที่สุดคือเรียกใช้ p10k configure
เลือกสไตล์ที่ใกล้เคียงกับเป้าหมายของคุณมากที่สุดแล้วแก้ไข ~/.p10k.zsh
ลักษณะที่ปรากฏของ Powerlevel10k เต็มรูปแบบมีตั้งแต่ spartan:
ถึง น่าขัน ฟุ่มเฟือย:
Powerlevel10k มาพร้อมกับส่วนข้อความเตือนคุณภาพสูงในตัวหลายสิบรายการ ซึ่งสามารถแสดงข้อมูลจากแหล่งที่มาที่หลากหลาย เมื่อคุณเรียกใช้ p10k configure
และเลือกสไตล์ใดๆ ยกเว้น Pure ส่วนต่างๆ เหล่านี้จำนวนมากจะถูกเปิดใช้งานตามค่าเริ่มต้น ในขณะที่ส่วนอื่นๆ สามารถเปิดใช้งานได้ด้วยตนเองโดยเปิด ~/.p10k.zsh
และไม่ใส่เครื่องหมายข้อคิดเห็น คุณสามารถเปิดใช้งานกลุ่มได้มากเท่าที่คุณต้องการ มันจะไม่ทำให้พรอมต์ของคุณหรือการเริ่มต้น Zsh ช้าลง
เซ็กเมนต์ | ความหมาย |
---|---|
anaconda | สภาพแวดล้อมเสมือนจริงจาก conda |
asdf | เวอร์ชันเครื่องมือจาก asdf |
aws | โปรไฟล์ aws |
aws_eb_env | aws สภาพแวดล้อมแบบยืดหยุ่นของฝักถั่ว |
azure | ชื่อบัญชีสีฟ้า |
background_jobs | การปรากฏตัวของงานพื้นหลัง |
battery | สถานะแบตเตอรี่ภายในและระดับการชาร์จ (ใช่ รวมแบตเตอรี่ แล้ว ) |
command_execution_time | ระยะเวลา (เวลากำแพง) ของคำสั่งสุดท้าย |
context | ผู้ใช้@ชื่อโฮสต์ |
cpu_arch | สถาปัตยกรรมซีพียู |
dir | ไดเร็กทอรีการทำงานปัจจุบัน |
direnv | สถานะไดเรนวี |
disk_usage | การใช้งานดิสก์ |
dotnet_version | เวอร์ชันดอทเน็ต |
fvm | สภาพแวดล้อมที่พลิ้วไหวจาก fvm |
gcloud | บัญชีและโครงการ google cloud cli |
goenv | ไปที่สภาพแวดล้อมจาก goenv |
google_app_cred | ข้อมูลรับรองแอปพลิเคชันของ Google |
go_version | ไปเวอร์ชัน |
haskell_stack | เวอร์ชัน haskell จากสแต็ก |
ip | ที่อยู่ IP และการใช้แบนด์วิธสำหรับอินเทอร์เฟซเครือข่ายที่ระบุ |
java_version | เวอร์ชันจาวา |
jenv | สภาพแวดล้อม Java จาก jenv |
kubecontext | บริบท Kubernetes ปัจจุบัน |
laravel_version | เวอร์ชันเฟรมเวิร์ก laravel php |
load | โหลดซีพียู |
luaenv | สภาพแวดล้อม lua จาก luaenv |
midnight_commander | เชลล์ผู้บัญชาการเที่ยงคืน |
nix_shell | ตัวบ่งชี้เปลือกห้าม |
nnn | nnn เชลล์ |
lf | เอลฟ์เชลล์ |
chezmoi_shell | เปลือกเชมัวร์ |
nodeenv | สภาพแวดล้อม node.js จาก nodeenv |
nodenv | สภาพแวดล้อม node.js จาก nodenv |
node_version | เวอร์ชัน node.js |
nordvpn | สถานะการเชื่อมต่อ nordvpn |
nvm | สภาพแวดล้อม node.js จาก nvm |
os_icon | โลโก้ OS ของคุณ (apple สำหรับ macOS, swirl สำหรับ debian ฯลฯ) |
package | name@version จาก package.json |
per_directory_history | Oh My Zsh ต่อไดเรกทอรี-ประวัติท้องถิ่น/ตัวบ่งชี้ทั่วโลก |
perlbrew | เวอร์ชัน Perl จาก Perlbrew |
phpenv | สภาพแวดล้อม php จาก phpenv |
php_version | เวอร์ชัน php |
plenv | สภาพแวดล้อม Perl จาก plenv |
prompt_char | สัญลักษณ์พรอมต์มัลติฟังก์ชั่น การเปลี่ยนแปลงขึ้นอยู่กับโหมด vi: ❯ , ❮ , V , ▶ สำหรับโหมดแทรก คำสั่ง ภาพ และแทนที่ ตามลำดับ; เปลี่ยนเป็นสีแดงเมื่อมีข้อผิดพลาด |
proxy | พร็อกซี http/https/ftp ทั่วทั้งระบบ |
public_ip | ที่อยู่ IP สาธารณะ |
pyenv | สภาพแวดล้อมหลามจาก pyenv |
ram | RAM ฟรี |
ranger | เรนเจอร์เชลล์ |
yazi | เปลือกยาซี |
rbenv | สภาพแวดล้อมทับทิมจาก rbenv |
rust_version | รุ่นสนิม |
rvm | สภาพแวดล้อมทับทิมจาก rvm |
scalaenv | เวอร์ชันสกาล่าจาก scalaenv |
status | รหัสทางออกของคำสั่งสุดท้าย |
swap | ใช้สลับ |
taskwarrior | การนับภารกิจของนักรบงาน |
terraform | พื้นที่ทำงานแบบพื้นดิน |
terraform_version | รุ่นพื้นผิว |
time | เวลาปัจจุบัน |
timewarrior | สถานะการติดตามไทม์วอร์ริเออร์ |
todo | รายการสิ่งที่ต้องทำ |
toolbox | ชื่อกล่องเครื่องมือ |
vcs | สถานะพื้นที่เก็บข้อมูล Git |
vim_shell | เป็นกลุ่มเชลล์ ( :sh ) |
virtualenv | สภาพแวดล้อมหลามจาก venv |
vi_mode | โหมด vi (คุณไม่จำเป็นต้องใช้สิ่งนี้หากคุณเปิดใช้งาน prompt_char) |
vpn_ip | ตัวบ่งชี้เครือข่ายส่วนตัวเสมือน |
wifi | ความเร็วอินเตอร์เน็ตไร้สาย |
xplr | เชลล์ xplr |
หากไม่มีส่วนที่พร้อมท์ซึ่งทำสิ่งที่คุณต้องการ ให้ดำเนินการของคุณเอง Powerlevel10k จัดเตรียม API สาธารณะสำหรับการกำหนดเซ็กเมนต์ที่รวดเร็วและยืดหยุ่นพอๆ กับเซ็กเมนต์ในตัว
บน Linux คุณสามารถดึงข้อมูลอุณหภูมิ CPU ปัจจุบันได้โดยการอ่าน /sys/class/thermal/thermal_zone0/temp
screencast แสดงวิธีการกำหนดส่วนที่พร้อมท์เพื่อแสดงค่านี้ เมื่อกำหนดกลุ่มแล้ว คุณจะใช้กลุ่มดังกล่าวได้เหมือนกับกลุ่มอื่นๆ พารามิเตอร์การปรับแต่งมาตรฐานทั้งหมดจะใช้งานได้ทันที
พิมพ์ p10k help segment
เพื่อใช้อ้างอิง
หมายเหตุ : หากคุณแก้ไขพารามิเตอร์ POWERLEVEL9K_*
ในเชลล์เชิงโต้ตอบที่เตรียมใช้งานแล้ว (ตรงข้ามกับการแก้ไข ~/.p10k.zsh
) การเปลี่ยนแปลงอาจไม่มีผลในทันที หากต้องการใช้การแก้ไข ให้เรียกใช้ p10k reload
การตั้งค่า POWERLEVEL9K_DISABLE_HOT_RELOAD=false
ขจัดความจำเป็นใน p10k reload
แต่ส่งผลให้พร้อมต์ช้าลงเล็กน้อย
เคล็ดลับ : นำหน้าชื่อเซ็กเมนต์ของคุณเองด้วย my_
เพื่อหลีกเลี่ยงการปะทะกับ Powerlevel10k เวอร์ชันในอนาคต
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~ /powerlevel10k
echo ' source ~/powerlevel10k/powerlevel10k.zsh-theme ' >> ~/.zshrc
ผู้ใช้ในประเทศจีนสามารถใช้มิเรอร์อย่างเป็นทางการบน gitee.com เพื่อการดาวน์โหลดที่เร็วขึ้น
中国用户可以使用 gitee.com 上的官方镜ซีรี่ย์加速下载.
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ~ /powerlevel10k
echo ' source ~/powerlevel10k/powerlevel10k.zsh-theme ' >> ~/.zshrc
นี่เป็นการติดตั้งที่ง่ายที่สุดและใช้งานได้แม้ว่าคุณจะใช้ตัวจัดการปลั๊กอินก็ตาม เพียงตรวจสอบให้แน่ใจว่าได้ปิดการใช้งานธีมปัจจุบันในตัวจัดการปลั๊กอินของคุณ ดูการแก้ไขปัญหาเพื่อขอความช่วยเหลือ
โคลนที่เก็บ:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM :- $HOME / .oh-my-zsh / custom} /themes/powerlevel10k
ผู้ใช้ในประเทศจีนสามารถใช้มิเรอร์อย่างเป็นทางการบน gitee.com เพื่อการดาวน์โหลดที่เร็วขึ้น
中国用户可以使用 gitee.com 上的官方镜ซีรี่ย์加速下载.
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM :- $HOME / .oh-my-zsh / custom} /themes/powerlevel10k
เปิด ~/.zshrc
ค้นหาบรรทัดที่ตั้งค่า ZSH_THEME
และเปลี่ยนค่าเป็น "powerlevel10k/powerlevel10k"
เพิ่ม zstyle :prezto:module:prompt theme powerlevel10k
ไปที่ ~/.zpreztorc
เพิ่ม zmodule romkatv/powerlevel10k --use degit
ไปที่ ~/.zimrc
และรัน zimfw install
เพิ่ม antibody bundle romkatv/powerlevel10k
ไปที่ ~/.zshrc
เพิ่ม romkatv/powerlevel10k
ใน ~/.zsh_plugins.txt
เพิ่ม antigen theme romkatv/powerlevel10k
ไปที่ ~/.zshrc
ตรวจสอบให้แน่ใจว่าคุณมี antigen apply
ที่ไหนสักแห่งหลังจากนั้น
เพิ่ม zplug romkatv/powerlevel10k, as:theme, depth:1
ถึง ~/.zshrc
เพิ่ม zgen load romkatv/powerlevel10k powerlevel10k
ไปที่ ~/.zshrc
เพิ่ม zplugin ice depth=1; zplugin light romkatv/powerlevel10k
ถึง ~/.zshrc
การใช้ depth=1
น้ำแข็งเป็นทางเลือก น้ำแข็งประเภทอื่นๆ ไม่แนะนำหรือสนับสนุนอย่างเป็นทางการโดย Powerlevel10k
เพิ่ม zinit ice depth=1; zinit light romkatv/powerlevel10k
ถึง ~/.zshrc
การใช้ depth=1
น้ำแข็งเป็นทางเลือก น้ำแข็งประเภทอื่นๆ ไม่แนะนำหรือสนับสนุนอย่างเป็นทางการโดย Powerlevel10k
เพิ่ม zi ice depth=1; zi light romkatv/powerlevel10k
ถึง ~/.zshrc
การใช้ depth=1
น้ำแข็งเป็นทางเลือก น้ำแข็งประเภทอื่นๆ ไม่แนะนำหรือสนับสนุนอย่างเป็นทางการโดย Powerlevel10k
เพิ่ม plug "romkatv/powerlevel10k"
ใน ~/.zshrc
brew install powerlevel10k
echo " source $( brew --prefix ) /share/powerlevel10k/powerlevel10k.zsh-theme " >> ~/.zshrc
yay -S --noconfirm zsh-theme-powerlevel10k-git
echo ' source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme ' >> ~/.zshrc
zsh-theme-powerlevel10k-git ที่อ้างอิงด้านบนเป็นแพ็คเกจ Powerlevel10k อย่างเป็นทางการ
apk add zsh zsh-theme-powerlevel10k
mkdir -p ~ /.local/share/zsh/plugins
ln -s /usr/share/zsh/plugins/powerlevel10k ~ /.local/share/zsh/plugins/
ทำตามคำแนะนำในหน้านี้
ในการรันครั้งแรก วิซาร์ดการกำหนดค่า Powerlevel10k จะถามคำถามคุณสองสามข้อและกำหนดค่าพร้อมท์ของคุณ หากไม่ทริกเกอร์โดยอัตโนมัติ ให้พิมพ์ p10k configure
วิซาร์ดการกำหนดค่าจะสร้าง ~/.p10k.zsh
ตามความต้องการของคุณ การปรับแต่งพร้อมท์เพิ่มเติมสามารถทำได้โดยการแก้ไขไฟล์นี้ มีความคิดเห็นมากมายที่จะช่วยคุณสำรวจตัวเลือกการกำหนดค่า
คำถามที่พบบ่อย :
การแก้ไขปัญหา :
หากคุณเคยใช้ Powerlevel9k มาก่อน อย่าลบตัวเลือกการกำหนดค่าออก Powerlevel10k จะหยิบพวกมันขึ้นมาและมอบ UI พร้อมท์แบบเดียวกับที่คุณคุ้นเคย ดูความเข้ากันได้ของ Powerlevel9k
คำถามที่พบบ่อย :
การแก้ไขปัญหา : ช่องว่างเพิ่มเติมหรือหายไปในพรอมต์เมื่อเปรียบเทียบกับ Powerlevel9k
Powerlevel10k ไม่ต้องการแบบอักษรที่กำหนดเอง แต่สามารถใช้ประโยชน์จากแบบอักษรเหล่านี้ได้หากมี มันทำงานได้ดีกับแบบอักษร Nerd, Source Code Pro, Font Awesome, Powerline และแม้แต่แบบอักษรระบบเริ่มต้น ตัวเลือกสไตล์ที่หลากหลายมีให้เลือกใช้เฉพาะเมื่อใช้ Nerd Fonts เท่านั้น
- แบบอักษรที่แนะนำ : แบบอักษร Meslo Nerd ได้รับการติดตั้งสำหรับ Powerlevel10k -
แบบอักษร monospace อันงดงามที่ออกแบบโดย Jim Lyles สำหรับ Bitstream ปรับแต่งแบบเดียวกันสำหรับ Apple ปรับแต่งเพิ่มเติมโดย André Berg และสุดท้ายได้รับการแก้ไขโดยของคุณด้วยสคริปต์แบบกำหนดเองที่พัฒนาโดย Ryan L McIntyre จาก Nerd Fonts ประกอบด้วยร่ายมนตร์และสัญลักษณ์ทั้งหมดที่ Powerlevel10k อาจต้องการ ผ่านการทดสอบการต่อสู้ในเทอร์มินัลที่แตกต่างกันหลายสิบตัวบนระบบปฏิบัติการหลักทั้งหมด
FAQ : แบบอักษรที่แนะนำถูกสร้างขึ้นมาอย่างไร?
หากคุณใช้ iTerm2 หรือ Termux p10k configure
สามารถติดตั้งแบบอักษรที่แนะนำสำหรับคุณได้ เพียงตอบ Yes
เมื่อถูกถามว่าจะติดตั้ง Meslo Nerd Font หรือไม่
หากคุณใช้เทอร์มินัลอื่น ให้ดำเนินการติดตั้งแบบอักษรด้วยตนเอง -
MesloLGS NF
พร้อมใช้งานกับทุกแอปพลิเคชันในระบบของคุณp10k configure
แล้วตอบ Yes
เมื่อถูกถามว่าจะติดตั้ง Meslo Nerd Font หรือไม่ หรือเปิด iTerm2 → การตั้งค่า → โปรไฟล์ → ข้อความ และตั้ง ค่าแบบอักษร เป็น MesloLGS NF
MesloLGS NF
fontFamily
ภายใต้ module.exports.config
เป็น MesloLGS NF
terminal.integrated.fontFamily
ในช่องค้นหาที่ด้านบนของแท็บ การตั้งค่า และตั้งค่าด้านล่างเป็น MesloLGS NF
ดูภาพหน้าจอนี้เพื่อดูว่าควรมีลักษณะอย่างไรหรือดูปัญหานี้เพื่อดูข้อมูลเพิ่มเติมMesloLGS NF Regular
MesloLGS NF Regular
MesloLGS NF Regular
MesloLGS NF
MesloLGS NF
MesloLGS NF
MesloLGS NF
p10k configure
แล้วตอบ Yes
เมื่อถูกถามว่าจะติดตั้ง Meslo Nerd Font หรือไม่config
ไปที่ Appearance แตะ เพิ่มแบบอักษรใหม่ แตะ Open Gallery เลือก MesloLGS NF.css แตะ นำเข้า แล้วพิมพ์ exit
ในโฮมวิวเพื่อโหลดแบบอักษรซ้ำMesloLGS NF
MesloLGS NF Regular
ออกจากกล่องโต้ตอบการตั้งค่าโดยคลิก ปิดMesloLGS NF Regular
ออกจากกล่องโต้ตอบการตั้งค่าโดยคลิก ปิดMesloLGS NF
หากคุณมี เซสชัน คุณต้องเปลี่ยนแบบอักษรในแต่ละเซสชันผ่าน การตั้งค่า → คลิกขวาที่แต่ละเซสชัน → แก้ไขเซสชัน → การตั้งค่าเทอร์มินัล → การตั้งค่าแบบอักษรMesloLGS NF Regular
หากต้องการเปลี่ยนแบบอักษรสำหรับการเชื่อมต่อโฮสต์ระยะไกล ให้ไปที่ การตั้งค่า → ตัวเลือกเทอร์มินัล → รูปลักษณ์และความรู้สึก และเปลี่ยน แบบอักษร: ใต้ Terminal UI เป็น MesloLGS NF Regular
MesloLGS NF
MesloLGS NF Regular
MesloLGS NF
แล้วคลิก ตกลง คลิก ตกลง เพื่อบันทึกโปรไฟล์ เลือกโปรไฟล์ใหม่และคลิก ตั้งเป็นค่าเริ่มต้น~/.config/alacritty/alacritty.toml
และเพิ่มส่วนต่อไปนี้: [ font . normal ]
family = " MesloLGS NF "
~/.config/foot/foot.ini
และเพิ่มส่วนต่อไปนี้: font =MesloLGS NF: size =12
~/.config/kitty/kitty.conf
และเพิ่มบรรทัดต่อไปนี้: font_family MesloLGS NF
MesloLGS NF
ต้องใช้เวอร์ชัน puTTY >= 0.75$HOME/.config/wezterm/wezterm.lua
และเพิ่มรายการต่อไปนี้: local wezterm = require ' wezterm ' ;
return {
font = wezterm . font ( " MesloLGS NF " ),
}
~/.Xresources
และเพิ่มบรรทัดต่อไปนี้: URxvt.font: xft:MesloLGS NF:size=11
xrdb ~/.Xresources
เพื่อโหลดซ้ำ การกำหนดค่าใหม่จะนำไปใช้กับเทอร์มินัลใหม่ทั้งหมด~/.Xresources
และเพิ่มบรรทัดต่อไปนี้: xterm*faceName: MesloLGS NF
xrdb ~/.Xresources
เพื่อโหลดซ้ำ การกำหนดค่าใหม่จะนำไปใช้กับเทอร์มินัลใหม่ทั้งหมด~/.config/zed/settings.json
และตั้งค่า terminal.font_family
เป็น "MesloLGS NF"
{
"terminal" : {
"font_family" : "MesloLGS NF"
} ,
// Other settings.
}
'MesloLGS NF'
(รวมถึงเครื่องหมายคำพูด) และ CSS แบบกำหนดเอง (ข้อความในบรรทัด) เป็นดังนี้: @font-face {
font-family : "MesloLGS NF" ;
src : url ( "https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Regular.ttf" );
font-weight : normal;
font-style : normal;
}
@font-face {
font-family : "MesloLGS NF" ;
src : url ( "https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Bold.ttf" );
font-weight : bold;
font-style : normal;
}
@font-face {
font-family : "MesloLGS NF" ;
src : url ( "https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Italic.ttf" );
font-weight : normal;
font-style : italic;
}
@font-face {
font-family : "MesloLGS NF" ;
src : url ( "https://raw.githubusercontent.com/romkatv/powerlevel10k-media/master/MesloLGS%20NF%20Bold%20Italic.ttf" );
font-weight : bold;
font-style : italic;
}
~/.config/deepin/deepin-terminal/config.conf
และเพิ่มส่วนต่อไปนี้: [basic.interface.font]
value = " MesloLGS NF "
p10k configure
เพื่อสร้าง ~/.p10k.zsh
ใหม่ การกำหนดค่าเก่าอาจทำงานไม่ถูกต้องกับแบบอักษรใหม่ใช้เทอร์มินัลอื่นและรู้วิธีตั้งค่าแบบอักษรหรือไม่ แบ่งปันความรู้โดยส่ง PR ขยายรายการ!
ลองใช้ Powerlevel10k ใน Docker คุณสามารถเปลี่ยนแปลงระบบไฟล์ได้อย่างปลอดภัยในขณะที่ลองใช้ธีม เมื่อคุณออกจาก Zsh คอนเทนเนอร์จะถูกลบ
docker run -e TERM -e COLORTERM -e LC_ALL=C.UTF-8 -it --rm alpine sh -uec '
apk add git zsh nano vim
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo "source ~/powerlevel10k/powerlevel10k.zsh-theme" >>~/.zshrc
cd ~/powerlevel10k
exec zsh '
เคล็ดลับ : ติดตั้งแบบอักษรที่แนะนำก่อนที่จะรันคำสั่ง Docker เพื่อเข้าถึงสไตล์พรอมต์ทั้งหมด
เคล็ดลับ : รัน p10k configure
ในขณะที่อยู่ใน Docker เพื่อลองใช้สไตล์พรอมต์อื่น
Powerlevel10k เปิดตัวภายใต้ใบอนุญาต MIT
$HOME/.git
จึงไม่แสดงพร้อมท์คำสั่งในการอัพเดต Powerlevel10k ขึ้นอยู่กับวิธีการติดตั้ง
การติดตั้ง | คำสั่งอัพเดต |
---|---|
คู่มือ | git -C ~/powerlevel10k pull |
โอ้ มาย ซช | git -C ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k pull |
เพรซโต | zprezto-update |
ซิม | zimfw update |
แอนติเจน | antigen update |
ยาแก้พิษ | antidote update |
สปลั๊ก | zplug update |
ซีเกน | zgen update |
สปลั๊กอิน | zplugin update |
ซินิท | zinit update |
ซี | zi update |
แซ่บ | zap update |
โฮมบรูว์ | brew update && brew upgrade |
อาร์ค ลินุกซ์ | yay -S --noconfirm zsh-theme-powerlevel10k-git |
อัลไพน์ลินุกซ์ | apk update && apk upgrade |
สิ่งสำคัญ : รีสตาร์ท Zsh หลังจากอัปเดต Powerlevel10k อย่าใช้ source ~/.zshrc
ลบการอ้างอิงถึง "p10k" ทั้งหมดออกจาก ~/.zshrc
คุณอาจมีตัวอย่างนี้ที่ด้านบน:
if [[ -r " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh " ]] ; then
source " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh "
fi
และนี่คือด้านล่าง:
[[ ! -f ~ /.p10k.zsh ]] || source ~ /.p10k.zsh
สิ่งเหล่านี้ถูกเพิ่มโดยวิซาร์ดการกำหนดค่า ลบออก
ลบการอ้างอิงถึง "powerlevel10k" ทั้งหมดออกจาก ~/.zshrc
, ~/.zpreztorc
และ ~/.zimrc
(ไฟล์เหล่านี้บางไฟล์อาจหายไป - ซึ่งเป็นเรื่องปกติ) ข้อมูลอ้างอิงเหล่านี้ถูกเพิ่มด้วยตนเองเมื่อติดตั้ง Powerlevel10k ดูคำแนะนำในการติดตั้งหากคุณต้องการการแจ้งเตือน
ตรวจสอบว่าการอ้างอิงถึง "p10k" และ "powerlevel10k" ทั้งหมดหายไปจาก ~/.zshrc
, ~/.zpreztorc
และ ~/.zimrc
grep -E ' p10k|powerlevel10k ' ~ /.zshrc ~ /.zpreztorc ~ /.zimrc 2> /dev/null
หากคำสั่งนี้สร้างเอาต์พุต ก็ยังคงมีการอ้างอิงถึง "p10k" หรือ "powerlevel10k" คุณต้องลบมันออก
ลบไฟล์การกำหนดค่า Powerlevel10k ไฟล์นี้สร้างขึ้นโดยวิซาร์ดการกำหนดค่าและอาจมีการแก้ไขด้วยตนเอง
rm -f ~ /.p10k.zsh
ลบไฟล์ต้นฉบับ Powerlevel10k ไฟล์เหล่านี้ถูกดาวน์โหลดแล้วเมื่อคุณติดตั้ง Powerlevel10k คำสั่งให้ลบจะขึ้นอยู่กับวิธีการติดตั้งที่คุณเลือก ดูคำแนะนำในการติดตั้งหากคุณต้องการการแจ้งเตือน
การติดตั้ง | คำสั่งถอนการติดตั้ง |
---|---|
คู่มือ | rm -rf ~/powerlevel10k |
โอ้ มาย ซช | rm -rf -- ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k |
เพรซโต | ไม่มี |
ซิม | zimfw uninstall |
แอนติเจน | antigen purge romkatv/powerlevel10k |
ยาแก้พิษ | antidote purge romkatv/powerlevel10k |
สปลั๊ก | zplug clean |
ซีเกน | zgen reset |
สปลั๊กอิน | zplugin delete romkatv/powerlevel10k |
ซินิท | zinit delete romkatv/powerlevel10k |
ซี | zi delete romkatv/powerlevel10k |
แซ่บ | zsh -ic 'zap clean' |
โฮมบรูว์ | brew uninstall powerlevel10k |
อาร์ค ลินุกซ์ | yay -R --noconfirm zsh-theme-powerlevel10k-git |
อัลไพน์ลินุกซ์ | apk del zsh-theme-powerlevel10k |
รีสตาร์ท Zsh อย่าใช้ source ~/.zshrc
ลบไฟล์แคช Powerlevel10k
rm -rf -- " ${XDG_CACHE_HOME :- $HOME / .cache} " /p10k- * (N) " ${XDG_CACHE_HOME :- $HOME / .cache} " /gitstatus
uname -sm | tr ' [A-Z] ' ' [a-z] '
target_uname
ด้วยเอาต์พุตของคำสั่งก่อนหน้า: target_uname= " replace this with the output of the previous command "
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~ /powerlevel10k
GITSTATUS_CACHE_DIR= " $HOME " /powerlevel10k/gitstatus/usrbin ~ /powerlevel10k/gitstatus/install -f -s " ${target_uname % * } " -m " ${target_uname #* } "
~/powerlevel10k
จากเครื่องที่เชื่อมต่ออินเทอร์เน็ตไปยังเครื่องที่ไม่มีอินเทอร์เน็ตsource ~/powerlevel10k/powerlevel10k.zsh-theme
ไปที่ ~/.zshrc
บนเครื่องที่ไม่มีการเข้าถึงอินเทอร์เน็ต: echo ' source ~/powerlevel10k/powerlevel10k.zsh-theme ' >> ~/.zshrc
~/.zshrc
บนเครื่องที่ไม่มีการเข้าถึงอินเทอร์เน็ตตั้งค่า ZSH_THEME
ให้ลบบรรทัดนั้นออก sed -i.bak ' /^ZSH_THEME=/d ' ~ /.zshrc
หากต้องการอัปเดต ให้ลบ ~/powerlevel10k
บนทั้งสองเครื่องออกแล้วทำซ้ำขั้นตอนที่ 1-3
วิธีที่ดีที่สุดในการขอความช่วยเหลือและรายงานข้อบกพร่องคือการเปิดปัญหา
Gitter เป็นอีกทางเลือกหนึ่ง
หากวิธีอื่นล้มเหลว โปรดส่งอีเมลไปที่ [email protected]
หากจำเป็น ให้เข้ารหัสการสื่อสารของคุณด้วยคีย์ PGP นี้
Powerlevel10k กำหนด prompt และไม่มีอะไรอื่น โดยจะตั้งค่าตัวเลือกที่เกี่ยวข้องกับพรอมต์ และพารามิเตอร์ PS1
และ RPS1
ทุกอย่างภายในพื้นที่ที่ไฮไลต์บนภาพหน้าจอจัดทำโดย Powerlevel10k Powerlevel10k ไม่สามารถควบคุมเนื้อหาเทอร์มินัลหรือสีภายนอกพื้นที่เหล่านี้ได้
Powerlevel10k ไม่มีผลกับ:
ls
ใช้git
PS1
และ RPS1
p10k
เท่านั้น # Add powerlevel10k to the list of Oh My Zsh themes.
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM /themes/powerlevel10k
# Replace ZSH_THEME="powerlevel9k/powerlevel9k" with ZSH_THEME="powerlevel10k/powerlevel10k".
sed -i.bak ' s/powerlevel9k/powerlevel10k/g ' ~ /.zshrc
# Restart Zsh.
exec zsh
p10k configure
และเลือกสไตล์พรอมต์ที่คุณชื่นชอบที่เกี่ยวข้อง:
ใช่. ดู zsh-bench หรือการเปรียบเทียบโดยตรงกับ Powerlevel9k และ Spaceship
ดูพร้อมท์ทันทีเพื่อเรียนรู้เกี่ยวกับพร้อมท์ทันที ส่วนนี้จะอธิบายวิธีที่คุณสามารถเปิดใช้งานและกำหนดค่าและแสดงรายการคำเตือนที่คุณควรทราบ
สามารถเปิดใช้งานพรอมต์ทันทีผ่าน p10k configure
หรือโดยการเพิ่มข้อมูลโค้ดต่อไปนี้ด้วยตนเองที่ด้านบนของ ~/.zshrc
:
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh " ]] ; then
source " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh "
fi
สิ่งสำคัญคือคุณต้องคัดลอกบรรทัดคำต่อคำ อย่าแทนที่ source
ด้วยอย่างอื่น อย่าเรียก zcompile
อย่าเปลี่ยนเส้นทางเอาต์พุต ฯลฯ
เมื่อเปิดใช้งานพร้อมท์ทันที ในช่วงระยะเวลาของอินพุตมาตรฐานการเริ่มต้น Zsh จะถูกเปลี่ยนเส้นทางไปยัง /dev/null
และเอาต์พุตมาตรฐานที่มีข้อผิดพลาดมาตรฐานจะถูกเปลี่ยนเส้นทางไปยังไฟล์ชั่วคราว เมื่อเริ่มต้น Zsh โดยสมบูรณ์แล้ว ตัวอธิบายไฟล์มาตรฐานจะถูกกู้คืน และเนื้อหาของไฟล์ชั่วคราวจะถูกพิมพ์ออกมา
เมื่อใช้ Instant prompt คุณควรตรวจสอบเอาต์พุตใดๆ ที่ปรากฏขึ้นเมื่อเริ่มต้น Zsh อย่างระมัดระวัง เนื่องจากอาจบ่งชี้ว่าการกำหนดค่าเริ่มต้นมีการเปลี่ยนแปลงหรืออาจเสียหายด้วย Instant prompt รหัสการเริ่มต้นที่อาจต้องใช้อินพุตคอนโซล เช่น การขอรหัสผ่านพวงกุญแจหรือการยืนยัน [y/n] จะต้องย้ายไปไว้เหนือคำนำพร้อมท์ทันทีใน ~/.zshrc
รหัสเริ่มต้นที่เพียงพิมพ์ไปยังคอนโซลแต่ไม่เคยอ่านจากโค้ดนั้นจะทำงานอย่างถูกต้องพร้อมรับคำทันที แม้ว่าเอาต์พุตที่ปกติจะมีสีอาจดูไม่มีสีก็ตาม คุณสามารถปล่อยไว้เฉยๆ ระงับเอาต์พุต หรือย้ายไปไว้เหนือคำนำพร้อมท์ทันที
นี่คือตัวอย่างของ ~/.zshrc
ที่หยุดทำงานเมื่อเปิดใช้งานพร้อมท์ทันที:
if [[ -r " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh " ]] ; then
source " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh "
fi
keychain id_rsa --agents ssh # asks for password
chatty-script # spams to stdout even when everything is fine
# ...
เวอร์ชันคงที่:
keychain id_rsa --agents ssh # moved before instant prompt
# OK to perform console I/O before this point.
if [[ -r " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh " ]] ; then
source " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh "
fi
# From this point on, until zsh is fully initialized, console input won't work and
# console output may appear uncolored.
chatty-script > /dev/null # spam output suppressed
# ...
หากไม่ได้ตั้งค่า POWERLEVEL9K_INSTANT_PROMPT
หรือตั้งค่าเป็น verbose
Powerlevel10k จะพิมพ์คำเตือนเมื่อตรวจพบเอาต์พุตของคอนโซลในระหว่างการเตรียมใช้งานเพื่อดึงความสนใจไปที่ปัญหาที่อาจเกิดขึ้น คุณสามารถปิดเสียงคำเตือนนี้ (โดยไม่ระงับเอาต์พุตคอนโซล) ด้วย POWERLEVEL9K_INSTANT_PROMPT=quiet
แนะนำให้ใช้วิธีนี้หากโค้ดเริ่มต้นใน ~/.zshrc
พิมพ์ไปที่คอนโซล และเป็นไปไม่ได้ที่จะย้ายไปไว้เหนือคำนำของพรอมต์ทันทีหรือระงับเอาต์พุต คุณสามารถปิดใช้งานพร้อมท์ทันทีได้อย่างสมบูรณ์ด้วย POWERLEVEL9K_INSTANT_PROMPT=off
ให้ทำเช่นนี้หากข้อความแจ้งทันใจทำให้การเริ่มต้น Zsh หยุดชะงัก และคุณไม่ทราบวิธีแก้ไข
ค่าของ POWERLEVEL9K_INSTANT_PROMPT
สามารถเปลี่ยนแปลงได้โดยการรัน p10k configure
และเลือกตัวเลือกที่เหมาะสมบนหน้าจอ Instant Prompt หรือคุณสามารถค้นหา POWERLEVEL9K_INSTANT_PROMPT
ใน ~/.p10k.zsh
ที่มีอยู่แล้วเปลี่ยนค่าที่นั่น
หมายเหตุ : Instant prompt ต้องใช้ Zsh >= 5.4 คุณสามารถเปิดใช้งานได้แม้ว่าจะใช้ Zsh เวอร์ชันเก่า แต่จะไม่ทำอะไรเลย
คำถามที่พบบ่อย :
หากคุณเปิดใช้งาน Instant prompt คุณควรมีบรรทัดเหล่านี้ที่ด้านบนของ ~/.zshrc
:
if [[ -r " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh " ]] ; then
source " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh "
fi
ในการเริ่มต้น direnv คุณต้องเพิ่มหนึ่งบรรทัดเหนือบล็อกนั้นและอีกหนึ่งบรรทัดด้านล่าง
(( ${+commands[direnv]} )) && emulate zsh -c " $( direnv export zsh ) "
if [[ -r " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh " ]] ; then
source " ${XDG_CACHE_HOME :- $HOME / .cache} /p10k-instant-prompt- ${( % ) :-% n} .zsh "
fi
(( ${+commands[direnv]} )) && emulate zsh -c " $( direnv hook zsh ) "
ที่เกี่ยวข้อง : ฉันจะส่งออก GPG_TTY เมื่อใช้พร้อมท์ทันทีได้อย่างไร
คุณสามารถส่งออก GPG_TTY
แบบนี้ได้ทุกที่ใน ~/.zshrc
:
export GPG_TTY= $TTY
ใช้งานได้ไม่ว่าคุณจะใช้พร้อมท์ทันทีหรือไม่ก็ตาม มันใช้งานได้แม้ว่าคุณจะไม่ได้ใช้ powerlevel10k เพื่อเป็นโบนัสพิเศษ มันเร็วกว่า export GPG_TTY=$(tty)
ที่ใช้กันทั่วไปมาก
ที่เกี่ยวข้อง : ฉันจะเริ่มต้น direnv ได้อย่างไรเมื่อใช้พร้อมท์ทันที
เมื่อใช้สไตล์ Lean, Classic หรือ Rainbow สถานะ Git อาจมีลักษณะดังนี้:
feature:master wip ⇣42⇡42 ⇠42⇢42 *42 merge ~42 +42 !42 ?42
เครื่องหมาย | ความหมาย | แหล่งที่มา |
---|---|---|
feature | สาขาปัจจุบัน แทนที่ด้วย #tag หรือ @commit หากไม่ได้อยู่ในสาขา | git status --ignore-submodules=dirty |
master | สาขาการติดตามระยะไกล แสดงเฉพาะในกรณีที่แตกต่างจากสาขาท้องถิ่น | git rev-parse --abbrev-ref --symbolic-full-name @{upstream} |
wip | สรุปการคอมมิตล่าสุดมี "wip" หรือ "WIP" | git show --pretty=%s --no-patch HEAD |
= | ทันสมัยด้วยรีโมท (ไม่ข้างหน้าหรือข้างหลัง) | git rev-list --count HEAD...@{upstream} |
⇣42 | การกระทำมากมายนี้อยู่เบื้องหลังรีโมท | git rev-list --right-only --count HEAD...@{upstream} |
⇡42 | จำนวนมากนี้กระทำก่อนระยะไกล | git rev-list --left-only --count HEAD...@{upstream} |
⇠42 | การกระทำหลายอย่างนี้อยู่เบื้องหลังการกดรีโมต | git rev-list --right-only --count HEAD...@{push} |
⇢42 | การกระทำหลายอย่างนี้เกิดขึ้นก่อนการกดรีโมต | git rev-list --left-only --count HEAD...@{push} |
*42 | ที่ซ่อนมากมายนี้ | git stash list |
merge | สถานะพื้นที่เก็บข้อมูล | git status --ignore-submodules=dirty |
~42 | ความขัดแย้งที่ผสานกันมากมายนี้ | git status --ignore-submodules=dirty |
+42 | การเปลี่ยนแปลงหลายฉากนี้ | git status --ignore-submodules=dirty |
!42 | การเปลี่ยนแปลงที่ไม่ได้จัดฉากมากมายนี้ | git status --ignore-submodules=dirty |
?42 | ไฟล์ที่ไม่ได้ติดตามจำนวนมากนี้ | git status --ignore-submodules=dirty |
─ | ไม่ทราบจำนวนไฟล์ที่จัดฉาก ไม่จัดฉาก หรือไม่ได้ติดตาม | echo $POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY หรือ git config --get bash.showDirtyState |
ที่เกี่ยวข้อง : ฉันจะเปลี่ยนรูปแบบของสถานะ Git ได้อย่างไร
หากต้องการเปลี่ยนรูปแบบของสถานะ GIT ให้เปิด ~/.p10k.zsh
ค้นหา my_git_formatter
และแก้ไขซอร์สโค้ด
ที่เกี่ยวข้อง : สัญลักษณ์ที่แตกต่างกันในสถานะ GIT หมายถึงอะไร?
$HOME/.git
จึงไม่แสดงในพรอมต์? เมื่อใช้สไตล์ลีนคลาสสิกหรือรุ้ง ~/.p10k.zsh
มีพารามิเตอร์ต่อไปนี้:
# Don't show Git status in prompt for repositories whose workdir matches this pattern.
# For example, if set to '~', the Git repository at $HOME/.git will be ignored.
# Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN= ' ~ '
หากต้องการดูสถานะ GIT สำหรับ $HOME/.git
ในพรอมต์ให้เปิด ~/.p10k.zsh
และลบ POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN
TL; DR: เมื่อสถานะ GIT ในพรอมต์ถูกกำหนดออกมานั่นหมายความว่า PowerLevel10K กำลังคำนวณสถานะ GIT ที่ทันสมัยในพื้นหลัง พรอมต์จะได้รับการรีเฟรชโดยอัตโนมัติเมื่อการคำนวณนี้เสร็จสิ้น
เมื่อไดเรกทอรีปัจจุบันของคุณอยู่ในพื้นที่เก็บข้อมูล GIT PowerLevel10K จะคำนวณสถานะ GIT ที่ทันสมัยหลังจากทุกคำสั่ง หากที่เก็บมีขนาดใหญ่หรือเครื่องช้าการคำนวณนี้อาจใช้เวลาค่อนข้างน้อย หากใช้เวลานานกว่า 10 มิลลิวินาที (กำหนดค่าผ่าน POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS
) PowerLevel10K จะแสดงสถานะ GIT ล่าสุดที่รู้จักเป็นสีเทาและยังคงคำนวณสถานะ GIT ที่ทันสมัยในพื้นหลัง เมื่อการคำนวณเสร็จสิ้น PowerLevel10K จะรีเฟรชพร้อมข้อมูลใหม่เวลานี้ด้วยสถานะ GIT สี
เมื่อใช้สไตล์ สายรุ้ง สถานะ Git จะแสดงเป็นสีดำบนสีเทาในขณะที่ยังคงคำนวณอยู่ ขึ้นอยู่กับจานสีเทอร์มินัลอาจอ่านได้ยาก ในกรณีนี้คุณอาจต้องการเปลี่ยนสีพื้นหลังเป็นสิ่งที่เบากว่าเพื่อความคมชัดมากขึ้น ในการทำเช่นนั้นให้เปิด ~/.p10k.zsh
ค้นหา POWERLEVEL9K_VCS_LOADING_BACKGROUND
ให้ไม่รู้สึกตัวหากมีการแสดงความคิดเห็นและเปลี่ยนค่า
typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=244
พิมพ์ source ~/.p10k.zsh
เพื่อใช้การเปลี่ยนแปลงของคุณกับเซสชัน ZSH ปัจจุบัน
ที่เกี่ยวข้อง : ฉันจะเปลี่ยนสีพรอมต์ได้อย่างไร?
เมื่อใช้สไตล์ลีนคลาสสิกหรือรุ้งพรอมต์แสดง username@hostname
เมื่อคุณเข้าสู่ระบบเป็นรูทหรือผ่าน SSH มีค่าเพียงเล็กน้อยในการแสดง username
หรือ hostname
เมื่อคุณเข้าสู่ระบบในเครื่องของคุณในฐานะผู้ใช้ปกติ ดังนั้นการขาด username@hostname
ในพรอมต์ของคุณจึงเป็นข้อบ่งชี้ว่าคุณกำลังทำงานในพื้นที่และคุณไม่ได้รูท อย่างไรก็ตามคุณสามารถเปลี่ยนได้
เปิด ~/.p10k.zsh
ใกล้กับด้านบนคุณจะเห็นพารามิเตอร์ที่สำคัญที่สุดที่กำหนดส่วนที่แสดงในพรอมต์ของคุณ กลุ่มพรอมต์ที่มีประโยชน์โดยทั่วไปทั้งหมดอยู่ในนั้น บางส่วนของพวกเขาเปิดใช้งานคนอื่น ๆ ได้รับการแสดงความคิดเห็น หนึ่งในนั้นคือความสนใจของคุณ
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
...
context # user@hostname
...
)
ค้นหา context
เพื่อค้นหาส่วนในการกำหนดค่าที่แสดงรายการพารามิเตอร์เฉพาะสำหรับเซ็กเมนต์พรอมต์นี้ คุณควรเห็นบรรทัดต่อไปนี้:
# Don't show context unless running with privileges or in SSH.
# Tip: Remove the next line to always show context.
typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
หากคุณทำตามเคล็ดลับและลบ (หรือแสดงความคิดเห็น) บรรทัดสุดท้ายคุณจะเห็น username@hostname
ในพรอมต์ คุณสามารถเปลี่ยนรูปแบบเป็นเพียง username
หรือเปลี่ยนสีโดยการปรับค่าของพารามิเตอร์ใกล้เคียง มีความคิดเห็นมากมายที่จะช่วยคุณไป
นอกจากนี้คุณยังสามารถย้าย context
ไปยังตำแหน่งที่แตกต่างกันใน POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
หรือแม้กระทั่งไปยัง POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
กลุ่มพรอมต์สามารถกำหนดค่าให้แสดงได้เฉพาะเมื่อคำสั่งปัจจุบันที่คุณกำลังพิมพ์เรียกใช้เครื่องมือที่เกี่ยวข้อง
# Show prompt segment "kubecontext" only when the command you are typing invokes
# invokes kubectl, helm, or kubens.
typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND= ' kubectl|helm|kubens '
กำหนดค่าที่สร้างโดย p10k configure
อาจมีพารามิเตอร์ประเภทนี้ ในการปรับแต่งเมื่อมีการแสดงเซ็กเมนต์ที่แตกต่างกันให้เปิด ~/.p10k.zsh
ค้นหา SHOW_ON_COMMAND
และลบพารามิเตอร์เหล่านี้หรือเปลี่ยนค่าของพวกเขา
นอกจากนี้คุณยังสามารถกำหนดฟังก์ชั่นใน ~/.zshrc
เพื่อสลับการแสดงของเซ็กเมนต์พรอมต์ระหว่างคำสั่ง เสมอ และ คำสั่ง สิ่งนี้คล้ายกับ kubeon
/ kubeoff
จาก Kube-PS1
function kube-toggle() {
if (( ${+POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND} )) ; then
unset POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND
else
POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND= ' kubectl|helm|kubens '
fi
p10k reload
if zle ; then
zle push-input
zle accept-line
fi
}
เรียกใช้ฟังก์ชั่นนี้โดยพิมพ์ kube-toggle
นอกจากนี้คุณยังสามารถผูกเข้ากับคีย์ได้โดยเพิ่มอีกสองบรรทัดลงใน ~/.zshrc
:
zle -N kube-toggle
bindkey ' ^] ' kube-toggle # ctrl-] to toggle kubecontext in powerlevel10k prompt
คุณสามารถเปลี่ยนจานสีที่ใช้โดยเทอร์มินัลหรือตั้งค่าสีผ่านพารามิเตอร์การกำหนดค่า PowerLevel10K
วิธีที่คุณเปลี่ยนจานสีเทอร์มินัล (โทนสีหรือชุดรูปแบบหรือชุดรูปแบบ) ขึ้นอยู่กับประเภทของเทอร์มินัลที่คุณใช้ มองไปรอบ ๆ ในการตั้งค่า/การตั้งค่าของเทอร์มินัลหรือปรึกษาเอกสาร
เมื่อคุณเปลี่ยนจานสีเทอร์มินัลมันมักจะส่งผลกระทบเฉพาะ 16 สีแรกโดยมีหมายเลขตั้งแต่ 0 เป็น 15 เพื่อที่จะเห็นผลกระทบใด ๆ ต่อพรอมต์ PowerLevel10K คุณต้องใช้สไตล์ที่พรอมต์ที่ใช้สีที่มีหมายเลขต่ำเหล่านี้ พิมพ์ p10k configure
และเลือก Rainbow , Lean → 8 สี หรือ บริสุทธิ์ → Original สไตล์อื่น ๆ ใช้สีที่มีหมายเลขสูงกว่าดังนั้นพวกเขาจึงมีลักษณะเหมือนกันในจานสีเทอร์มินัล
เปิด ~/.p10k.zsh
ค้นหา "สี", "เบื้องหน้า" และ "พื้นหลัง" และเปลี่ยนค่าของพารามิเตอร์ที่เหมาะสม ตัวอย่างเช่นนี่คือวิธีที่คุณสามารถตั้งค่าส่วนเบื้องหน้าของ time
พร้อมท์เป็นสีแดงสด:
typeset -g POWERLEVEL9K_TIME_FOREGROUND=160
มีการระบุสีโดยใช้ตัวเลขตั้งแต่ 0 ถึง 255 สีจาก 0 ถึง 15 ดูแตกต่างกันในเทอร์มินัลที่แตกต่างกัน เทอร์มินัลหลายแห่งยังรองรับการปรับแต่งสีเหล่านี้ผ่านจานสี (โทนสีหรือชุดรูปแบบหรือธีม) สีจาก 16 ถึง 255 มักจะเหมือนกันเสมอ
พิมพ์ source ~/.p10k.zsh
เพื่อใช้การเปลี่ยนแปลงของคุณกับเซสชัน ZSH ปัจจุบัน
หากต้องการดูว่าสีที่มีตัวเลขแตกต่างกันอย่างไรในเทอร์มินัลของคุณให้เรียกใช้คำสั่งต่อไปนี้:
for i in {0..255} ; do print -Pn " %K{ $i } %k%F{ $i } ${(l : 3 :: 0 : )i} %f " ${ ${(M)$((i % 6)) :# 3} : + $' n ' } ; done
หากเทอร์มินัลของคุณรองรับ trueColor คุณสามารถใช้สี 24 บิตในรูปแบบ #RRGGBB
นอกเหนือจากสีที่มีหมายเลข
typeset -g POWERLEVEL9K_TIME_FOREGROUND= ' #FF0000 '
ที่เกี่ยวข้อง:
โดยค่าเริ่มต้นเทอร์มินัล VSCODE อาจแทนที่สีเบื้องหน้าที่คุณเลือกด้วยสีที่แตกต่างกันโดยพลการ พฤติกรรมนี้สามารถปิดได้ในการตั้งค่า VSCODE
PowerLevel10k ใช้ Gitstatus เป็นแบ็กเอนด์ที่อยู่เบื้องหลัง vcs
Prompt; Gitstatus วางไข่ gitstatusd
และ zsh
ดู Gitstatus สำหรับรายละเอียด PowerLevel10K อาจวางไข่ zsh
เพื่อทำการคำนวณโดยไม่ต้องปิดกั้นพรอมต์ เพื่อหลีกเลี่ยงอันตรายจากความปลอดภัยกระบวนการพื้นหลังเหล่านี้ไม่ได้ใช้ร่วมกันโดยเปลือกแบบโต้ตอบที่แตกต่างกัน พวกเขาจะยุติโดยอัตโนมัติเมื่อกระบวนการ Parent zsh
สิ้นสุดลงหรือเรียกใช้ exec(3)
ไม่ PowerLevel10K นั้นรวดเร็วเสมอโดยมีการกำหนดค่าใด ๆ ที่คุณโยน หากคุณมีเวลาแฝงที่เห็นได้ชัดเจนเมื่อใช้ PowerLevel10K โปรดเปิดปัญหา
ใช่. ดู Zsh-Bench
PowerLevel10K ถูกแยกออกจาก PowerLevel9K ในเดือนมีนาคม 2019 หลังจากการอภิปรายนานหนึ่งสัปดาห์ใน PowerLevel9K#1170 PowerLevel9K เป็นโครงการที่เป็นผู้ใหญ่แล้วที่มีฐานผู้ใช้ขนาดใหญ่และรอบการวางจำหน่ายที่วัดได้ในเดือน PowerLevel10K ถูกหมุนไปซ้ำในการปรับปรุงประสิทธิภาพและคุณสมบัติใหม่ที่สูงขึ้นมาก
PowerLevel9K และ PowerLevel10K เป็นโครงการอิสระ เมื่อใช้งานหนึ่งคุณไม่ควรติดตั้งอื่น ๆ ควรยื่นปัญหากับโครงการที่คุณใช้จริง ไม่มีบุคคลใดที่มีสิทธิในการเก็บข้อมูลทั้งสอง การแก้ไขข้อผิดพลาดทั้งหมดและคุณสมบัติใหม่ที่มุ่งมั่นไปยังที่เก็บ PowerLevel9K ได้รับการพอร์ตไปยัง PowerLevel10K
เมื่อเวลาผ่านไปรหัสทั้งหมดใน PowerLevel10K ได้รับการเขียนใหม่ ขณะนี้ไม่มีการทับซ้อนที่มีความหมายระหว่างการใช้งานของ PowerLevel9K และ PowerLevel10K
PowerLevel10K มุ่งมั่นที่จะรักษาความเข้ากันได้ย้อนหลังกับการกำหนดค่าทั้งหมดอย่างไม่มีกำหนด ความมุ่งมั่นนี้ครอบคลุมพารามิเตอร์การกำหนดค่าทั้งหมดที่ได้รับการยอมรับโดย PowerLevel9K (ดูความเข้ากันได้ของ PowerLevel9K) และพารามิเตอร์เพิ่มเติมที่ PowerLevel10K เข้าใจเท่านั้น ชื่อของพารามิเตอร์ทั้งหมดใน PowerLevel10K เริ่มต้นด้วย POWERLEVEL9K_
เพื่อความสอดคล้อง
เกือบ. มีความแตกต่างเล็กน้อย
git
VCS เท่านั้นที่เปิดใช้งานใน PowerLevel10K หากคุณต้องการ svn
และ hg
ให้เพิ่มลงใน POWERLEVEL9K_VCS_BACKENDS
แบ็กเอนด์เหล่านี้ยังไม่ได้รับการปรับให้เหมาะสมใน PowerLevel10K ดังนั้นการเปิดใช้งานพวกเขาจะทำให้ ช้ามากPOWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY=true
POWERLEVEL9K_MODE
ก่อนที่จะจัดหาธีม พารามิเตอร์นี้ถูกเพิกเฉยโดย PowerLevel9K แต่ได้รับเกียรติจาก PowerLevel10K หากคุณต้องการให้พรอมต์ของคุณดูใน PowerLevel10K เช่นเดียวกับใน PowerLevel9K ให้ลบ POWERLEVEL9K_MODE
ZLE_RPROMPT_INDENT
เป็นผลให้พร้อมท์ที่ถูกต้องใน PowerLevel10K สามารถมีพื้นที่เพิ่มเติมได้ในตอนท้ายเมื่อเทียบกับ PowerLevel9K ตั้งค่า ZLE_RPROMPT_INDENT=0
หากคุณไม่ต้องการพื้นที่นั้น รายละเอียดเพิ่มเติมในการแก้ไขปัญหาPOWERLEVEL9K_LEGACY_ICON_SPACING=true
เพื่อให้ได้ระยะห่างเช่นเดียวกับใน powerlevel9k รายละเอียดเพิ่มเติมในการแก้ไขปัญหาหากคุณสังเกตเห็นการเปลี่ยนแปลงอื่น ๆ ในรูปลักษณ์ที่รวดเร็วเมื่อเปลี่ยนจาก PowerLevel9K เป็น PowerLevel10K โปรดเปิดปัญหา
มีความคิดเห็นมากมายเกี่ยวกับสิ่งที่ถือเป็นพรอมต์ที่ดีที่สุดเช่นเดียวกับผู้คน ส่วนใหญ่จะลงมาเพื่อความชอบส่วนตัว อย่างไรก็ตามมีความหมายที่ซ่อนอยู่เล็กน้อยของตัวเลือกที่แตกต่างกัน
สไตล์บริสุทธิ์คือการจำลองแบบที่แน่นอนของธีม ZSH บริสุทธิ์ มันมีอยู่เพื่อลดการโยกย้ายถิ่นฐานสำหรับผู้ใช้ของธีมนี้ เว้นแต่คุณจะเป็นหนึ่งในนั้นให้เลือกสไตล์ลีนที่บริสุทธิ์
หากคุณต้องการ จำกัด สีที่พร้อมใช้งานกับจานสีเทอร์มินัลที่เลือก (พูดว่า มืดมืด ) ให้ใช้ สายรุ้ง , ลีน → 8 สี หรือ บริสุทธิ์ → ต้นฉบับ สไตล์อื่น ๆ ใช้สีคงที่และดูเหมือนกันในจานสีเทอร์มินัล
สไตล์ทั้งหมดยกเว้น Pure มีตัวเลือกในการใช้ ASCII Charset พรอมต์จะดูสวยน้อยลง แต่จะแสดงผลอย่างถูกต้องกับแบบอักษรทั้งหมดและในทุกที่
หากคุณเปิดใช้งานพรอมต์ชั่วคราวให้ใช้ประโยชน์จากพรอมต์สองบรรทัด คุณจะได้รับประโยชน์จากพื้นที่พิเศษสำหรับคำสั่งการพิมพ์โดยไม่มีข้อเสียตามปกติของความหนาแน่นของสกรอลล์แบ็คที่ลดลง การมีคำสั่งทั้งหมดเริ่มต้นจากการชดเชยเดียวกันก็ดีเช่นกัน
ในทำนองเดียวกันหากคุณเปิดใช้งานพรอมต์ชั่วคราวให้พรอมต์กระจัดกระจาย (พร้อมบรรทัดว่างก่อนที่จะแจ้ง) เป็นตัวเลือกที่ยอดเยี่ยม
หากคุณกำลังใช้ VI Keymap ให้เลือกพรอมต์ด้วย prompt_char
ในนั้น (แสดงเป็นสีเขียว ❯
ในตัวช่วยสร้าง) สัญลักษณ์นี้เปลี่ยนแปลงขึ้นอยู่กับโหมด VI: ❯
, ❮
, V
, ▶
สำหรับการแทรก, คำสั่ง, ภาพและเปลี่ยนโหมดตามลำดับ เมื่อคำสั่งล้มเหลวสัญลักษณ์จะเปลี่ยนเป็นสีแดง สไตล์ ลีน มักจะมี prompt_char
อยู่เสมอ สไตล์ สายรุ้ง และ คลาสสิก มีเฉพาะในการกำหนดค่าสองบรรทัดโดยไม่มีเฟรมซ้าย
หากคุณให้ความสำคัญกับพื้นที่แนวนอนหรือชอบสุนทรียศาสตร์ที่เรียบง่าย:
หมายเหตุ : คุณสามารถเรียกใช้ตัวช่วยสร้างการกำหนดค่าได้หลายครั้งเท่าที่คุณต้องการ พิมพ์ p10k configure
ให้ลองใช้สไตล์พรอมต์ใหม่
ใช้การกำหนดค่านี้
คุณสามารถดาวน์โหลดได้บันทึกเป็น ~/.p10k.zsh
และ source ~/.p10k.zsh
จาก ~/.zshrc
หรือแหล่งที่มา p10k-robbyrussell.zsh
โดยตรงจากที่เก็บ powerlevel10k
โคลนของคุณ
ไม่ได้เมื่อคุณกด Enter และคำสั่งที่คุณพิมพ์เริ่มทำงานสถานะข้อผิดพลาดยังไม่ทราบดังนั้นจึงไม่สามารถแสดงได้อย่างรวดเร็ว เมื่อคำสั่งเสร็จสมบูรณ์สถานะข้อผิดพลาดจะได้รับรู้ แต่ไม่สามารถอัปเดตพรอมต์สำหรับคำสั่ง นั้น ได้อีกต่อไป นี่คือเหตุผลที่สถานะข้อผิดพลาดสำหรับทุกคำสั่งสะท้อนในพรอมต์ ถัดไป
สำหรับรายละเอียดดูโพสต์นี้ใน /r /zsh
ZSH 5.3 หรือใหม่ควรทำงาน การเริ่มต้นอย่างรวดเร็วต้องใช้ zsh> = 5.4
สกรีนช็อตและ GIF แบบเคลื่อนไหวทั้งหมดถูกบันทึกไว้ในเทอร์มินัล Gnome ด้วยฟอนต์ที่แนะนำและจานสี Dango Dark Color ที่มีสีพื้นหลังที่กำหนดเอง ( #171A1B
แทน #2E3436
- สองเท่า)
การไฮไลต์ไวยากรณ์ที่ปัจจุบันจัดทำโดย ZSH-Syntax-highlighting
แบบอักษรที่แนะนำคือผลผลิตของบุคคลหลายคน ต้นกำเนิดของมันคือ Bitstream Vera Sans Mono ซึ่งให้กำเนิด Menlo ซึ่งทำให้ Meslo วางไข่ ในที่สุดร่ายมนตร์พิเศษได้ถูกเพิ่มเข้าไปใน Meslo ด้วยสคริปต์สคริปต์จากแบบอักษร Nerd ตัวอักษรสุดท้ายถูกปล่อยออกมาภายใต้ข้อกำหนดของใบอนุญาต Apache
Meslolgs NF Font สามารถสร้างใหม่ด้วยคำสั่งต่อไปนี้ (ต้องใช้ git
และ docker
):
git clone --depth=1 https://github.com/romkatv/nerd-fonts.git
cd nerd-fonts
./build ' Meslo/S/* '
หากทุกอย่างเป็นไปด้วยดีไฟล์ ttf
สี่ไฟล์จะปรากฏใน ./out
out
ขณะนี้ไม่ง่ายหรือไม่แนะนำให้บรรจุและแจกจ่าย PowerLevel10K ไม่มีคำแนะนำที่คุณสามารถทำตามได้ซึ่งจะช่วยให้คุณอัปเดตแพ็คเกจของคุณได้อย่างง่ายดายเมื่อเปิดตัว PowerLevel10K เวอร์ชันใหม่ สิ่งนี้อาจเปลี่ยนแปลงในอนาคต แต่ไม่เร็ว
[oh-my-zsh] theme 'powerlevel10k/powerlevel10k' not found
source ~/.zshrc
[oh-my-zsh] theme 'powerlevel10k/powerlevel10k' not found
เมื่อเปิดเทอร์มินัลหรือเริ่ม ZSH ด้วยตนเองคุณอาจพบข้อความแสดงข้อผิดพลาดนี้:
[oh-my-zsh] theme 'powerlevel10k/powerlevel10k' not found
typeset -p P9K_VERSION
เพื่อตรวจสอบว่าโหลด PowerLevel10K หรือไม่typeset -p P9K_VERSION
ประสบความสำเร็จและพิมพ์บางอย่างเช่น typeset P9K_VERSION=1.19.14
(รุ่นอาจแตกต่างกัน) ให้ลบบรรทัดต่อไปนี้ออกจาก ~/.zshrc
: ZSH_THEME= " powerlevel10k/powerlevel10k "
typeset -p P9K_VERSION
ล้มเหลวด้วย typeset: no such variable: P9K_VERSION
รันคำสั่งต่อไปนี้: git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM :- $HOME / .oh-my-zsh / custom} /themes/powerlevel10k
exec zsh
ถ้ามันดูเหมือนปกติ ?
นั่นเป็นเรื่องปกติ หมายความว่าคุณมีไฟล์ที่ไม่ได้ติดตามในที่เก็บ GIT ปัจจุบัน พิมพ์ git status
เพื่อดูไฟล์เหล่านี้ คุณสามารถเปลี่ยนสัญลักษณ์นี้หรือปิดการแสดงผลของไฟล์ที่ไม่ได้ติดตามโดยสิ้นเชิง ค้นหา untracked files
ใน ~/.p10k.zsh
คำถามที่พบบ่อย : สัญลักษณ์ที่แตกต่างกันในสถานะ GIT หมายถึงอะไร?
นอกจากนี้คุณยังสามารถรับเครื่องหมายคำถามที่ดูแปลก ๆ ได้ในพรอมต์ของคุณหากตัวอักษรของเทอร์มินัลหายไป ดูไอคอนสัญลักษณ์ร่ายมนตร์หรือสัญลักษณ์ Powerline ไม่แสดงผล
รีสตาร์ทเทอร์มินัลของคุณติดตั้งตัวอักษรที่แนะนำและเรียกใช้ p10k configure
ภาพหน้าจอมีความไม่สมบูรณ์สามภาพ จากซ้ายไปขวา:
ธีม ZSH ไม่มีการควบคุมเนื้อหาเทอร์มินัล ทุกสิ่งที่คุณเห็นบนหน้าจอทำจากตัวละคร monospace ส่วนพรอมต์ Powerline สีขาวทำจากข้อความบนพื้นหลังสีขาวตามด้วย U+E0B0 (สามเหลี่ยมชี้ขวา)
หากพรอมต์ PowerLevel10K มีความไม่สมบูรณ์เกี่ยวกับสัญลักษณ์ Powerline คุณจะเห็นความไม่สมบูรณ์แบบเดียวกันกับธีม PowerLine ทั้งหมด (Agnoster, PowerLevel9K, PowerLine ฯลฯ )
มีหลายสิ่งที่คุณสามารถลองจัดการกับความไม่สมบูรณ์เหล่านี้ได้:
วิธีแก้ปัญหาที่รุนแรงยิ่งขึ้นคือการเปลี่ยนเป็นสไตล์ที่รวดเร็วโดยไม่มีพื้นหลัง พิมพ์ p10k configure
และเลือก Lean สไตล์นี้มีรูปลักษณ์ที่มีน้ำหนักเบาทันสมัย เป็นโบนัสมันไม่ได้รับผลกระทบจากการแสดงความไม่สมบูรณ์ที่ทำให้เกิดความพร้อมในสไตล์ Powerline
พิมพ์ echo 'u276F'
หากคุณได้รับข้อผิดพลาดว่า "ZSH: ตัวละครไม่อยู่ในช่วง" สถานที่ของคุณไม่รองรับ UTF-8 คุณต้องแก้ไข หากคุณใช้ ZSH ผ่าน SSH ให้ดูสิ่งนี้ หากคุณใช้ ZSH ในเครื่องอยู่ในตำแหน่ง Google "ตั้งค่าสถานที่ UTF-8 ใน ระบบปฏิบัติการของคุณ "
พิมพ์ echo 'u276F'
หากคุณได้รับข้อผิดพลาดว่า "zsh: ตัวละครไม่อยู่ในช่วง" ให้ดูที่ส่วนก่อนหน้า
หากคำสั่ง echo
พิมพ์ ❯
แต่เคอร์เซอร์ยังคงอยู่ในสถานที่ที่ไม่ถูกต้องให้ติดตั้งตัวอักษรที่แนะนำและเรียกใช้ p10k configure
หากสิ่งนี้ไม่ได้ช่วยเพิ่ม unset ZLE_RPROMPT_INDENT
ที่ด้านล่างของ ~/.zshrc
ยังคงมีปัญหา? เรียกใช้คำสั่งต่อไปนี้เพื่อวินิจฉัยปัญหา:
() {
emulate -L zsh
setopt err_return no_unset
local text
print -rl -- ' Select a part of your prompt from the terminal window and paste it below. ' ' '
read -r ' ?Prompt: ' text
local -i len= ${(m) # text}
local frame= " +- ${(pl. $len ..-.) :- } -+ "
print -lr -- $frame " | $text | " $frame
}
+------------------------------+
| romka@adam ✓ ~/powerlevel10k |
+------------------------------+
หากเอาต์พุตของคำสั่งจัดเรียงสำหรับทุกส่วนของพรอมต์ของคุณ (ซ้ายและขวา) สิ่งนี้จะระบุข้อผิดพลาดในชุดรูปแบบหรือการกำหนดค่าของคุณ ใช้คำสั่งนี้เพื่อวินิจฉัย:
print -rl -- ${(eq+)PROMPT} ${(eq+)RPROMPT}
มองหา %{...%}
และ backslash หลบหนีในผลลัพธ์ หากมีพวกเขาเป็นผู้ร้าย เปิดปัญหาถ้าคุณติดอยู่
+-----------------------------+
| romka@adam ✓ ~/powerlevel10k |
+-----------------------------+
สิ่งนี้มักเกิดจากข้อผิดพลาดเทอร์มินัลหรือการกำหนดค่าผิดพลาดที่ทำให้มันพิมพ์อักขระความกว้างที่คลุมเครือเป็นความกว้างสองเท่าแทนที่จะเป็นความกว้างเดียว ตัวอย่างเช่นปัญหานี้
+------------------------------+
| romka@adam ✓~/powerlevel10k |
+------------------------------+
โปรดทราบว่าพรอมต์นี้แตกต่างจากต้นฉบับเนื่องจากไม่มีที่ว่างหลังจากเครื่องหมายเช็ค
สิ่งนี้อาจเกิดจากข้อผิดพลาดระดับต่ำใน macOS ดูปัญหานี้
สิ่งนี้สามารถเกิดขึ้นได้หากพรอมต์มีร่ายมนตร์ที่กำหนดให้เป็น "กว้าง" ในมาตรฐาน Unicode และเทอร์มินัลของคุณแสดงอย่างไม่ถูกต้องเป็นแบบไม่กว้าง เทอร์มินัลที่ทุกข์ทรมานจากข้อ จำกัด นี้รวมถึง Konsole, Hyper และ Terminal VSCODE ในตัว วิธีแก้ปัญหาคือการใช้เทอร์มินัลที่แตกต่างกันหรือลบร่ายมนตร์กว้างทั้งหมดออกจากพรอมต์
+--------------------------------+
| romka@adam ✓ ~/powerlevel10k |
+--------------------------------+
สิ่งนี้อาจเกิดจากสถานที่ตั้งที่ผิดพลาด ดูปัญหานี้
ดูเคอร์เซอร์อยู่ในสถานที่ที่ไม่ถูกต้อง
ดูเคอร์เซอร์อยู่ในสถานที่ที่ไม่ถูกต้อง
เมื่อ PowerLevel10K เริ่มต้นจะเรียก p10k configure
โดยอัตโนมัติหากไม่มีการกำหนดพารามิเตอร์ POWERLEVEL9K_*
ขึ้นอยู่กับตัวเลือกสไตล์ที่รวดเร็วของคุณตัวช่วยสร้างการกำหนดค่าจะสร้าง ~/.p10k.zsh
พร้อมพารามิเตอร์ POWERLEVEL9K_*
พารามิเตอร์พารามิเตอร์ในนั้นและเพิ่มบรรทัดลงใน ~/.zshrc
เพื่อจัดหาไฟล์นี้ ครั้งต่อไปที่คุณเริ่ม ZSH ตัวช่วยสร้างการกำหนดค่าไม่ควรทำงานโดยอัตโนมัติ ถ้าเป็นเช่นนั้นหมายความว่าการประเมิน ~/.zshrc
จะสิ้นสุดลงก่อนกำหนดก่อนที่จะถึงบรรทัดที่แหล่ง ~/.p10k.zsh
สิ่งนี้มักเกิดขึ้นเนื่องจากข้อผิดพลาดทางไวยากรณ์ใน ~/.zshrc
ข้อผิดพลาดเหล่านี้ถูกซ่อนไว้โดยหน้าจอตัวช่วยสร้างการกำหนดค่าดังนั้นคุณจะไม่สังเกตเห็น เมื่อคุณออกจากตัวช่วยสร้างการกำหนดค่าให้มองหาข้อความแสดงข้อผิดพลาด คุณยังสามารถใช้ POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true zsh
เพื่อเริ่ม ZSH โดยไม่ต้องใช้ตัวช่วยสร้างการกำหนดค่าโดยอัตโนมัติ เมื่อคุณเห็นข้อผิดพลาดแก้ไข ~/.zshrc
เพื่อกำจัดพวกเขา
หากรุ่น ZSH ต่ำกว่า 5.7.1 หรือตัวแปรสภาพแวดล้อม COLORTERM
ไม่ใช่ 24bit
หรือ truecolor
ตัวช่วยสร้างการกำหนดค่าจะไม่เสนอสไตล์ที่บริสุทธิ์ด้วยโทนสี Snazzy FIX : ติดตั้ง ZSH> = 5.7.1 และใช้เทอร์มินัลที่มีการรองรับ trueColor ตรวจสอบด้วย print -P '%F{#ff0000}red%f'
หากเทอร์มินัลสามารถแสดงน้อยกว่า 256 สีตัวช่วยสร้างการกำหนดค่า prelects สไตล์ลีนที่มี 8 สี สไตล์อื่น ๆ ทั้งหมดต้องการอย่างน้อย 256 สี การแก้ไข : ใช้เทอร์มินัลที่มีการรองรับสี 256 และตรวจสอบให้แน่ใจว่าตั้งค่า TERM
สภาพแวดล้อมที่ถูกต้อง ตรวจสอบด้วย print $terminfo[colors]
หากไม่มีสถานที่ UTF-8 ในระบบตัวช่วยสร้างการกำหนดค่าจะไม่เสนอสไตล์ที่พร้อมใช้งานที่ใช้อักขระ Unicode FIX : ติดตั้งสถานที่ UTF-8 ตรวจสอบด้วย locale -a
อีกกรณีหนึ่งที่ตัวช่วยสร้างการกำหนดค่าอาจไม่เสนอรูปแบบพรอมต์ Unicode คือเมื่อตัวเลือก MULTIBYTE
Shell ถูกปิดใช้งาน การแก้ไข : เปิดใช้งานตัวเลือก MULTIBYTE
หรือไม่ปิดใช้งาน (ตัวเลือกนี้เปิดใช้งานใน ZSH โดยค่าเริ่มต้น) ตรวจสอบด้วย print -r -- ${options[MULTIBYTE]}
เมื่อเปิดใช้งาน MULTIBYTE
และสถานที่ UTF-8 มีอยู่คำถามสองสามข้อแรกที่ถามโดยตัวช่วยสร้างการกำหนดค่าประเมินความสามารถของแบบอักษรเทอร์มินัล หากคำตอบของคุณระบุว่าร่ายมนตร์บางตัวไม่ได้แสดงผลอย่างถูกต้องตัวช่วยสร้างการกำหนดค่าจะไม่เสนอรูปแบบที่รวดเร็วที่ใช้ แก้ไข : รีสตาร์ทเทอร์มินัลของคุณและติดตั้งตัวอักษรที่แนะนำ ตรวจสอบโดยเรียกใช้ p10k configure
และตรวจสอบว่าร่ายมนตร์ทั้งหมดแสดงผลอย่างถูกต้อง
เมื่อคุณดาวน์โหลดแบบอักษรที่แนะนำคุณสามารถติดตั้งได้เช่นเดียวกับแบบอักษรอื่น ๆ Google "วิธีการติดตั้งแบบอักษรบน ระบบปฏิบัติการของคุณ "
tl; dr: เพิ่ม ZLE_RPROMPT_INDENT=0
และ POWERLEVEL9K_LEGACY_ICON_SPACING=true
to ~/.zshrc
เพื่อให้ได้ระยะห่างที่รวดเร็วเช่นเดียวกับใน PowerLevel9K
เมื่อใช้ PowerLevel10K กับการกำหนดค่า PowerLevel9K คุณอาจได้รับช่องว่างเพิ่มเติมในที่นี่และที่นั่น สิ่งเหล่านี้มีสองรสชาติ
tl; dr: เพิ่ม ZLE_RPROMPT_INDENT=0
ถึง ~/.zshrc
เพื่อกำจัดพื้นที่นั้น
จากเอกสาร ZSH:
ZLE_RPROMPT_INDENT <S>
หากตั้งค่าใช้เพื่อให้การเยื้องระหว่างด้านขวามือของพรอมต์ขวาในตัวแก้ไขบรรทัดตามที่กำหนดโดย
RPS1
หรือRPROMPT
และด้านขวามือของหน้าจอ หากไม่ได้ตั้งค่าจะใช้ค่า1
โดยทั่วไปแล้วสิ่งนี้จะถูกใช้เพื่อตั้งค่าเป็น
0
เพื่อให้พรอมต์ปรากฏขึ้นด้วยด้านขวามือของหน้าจอ
PowerLevel10K เคารพพารามิเตอร์นี้ หากคุณตั้งค่า ZLE_RPROMPT_INDENT=1
(หรือปล่อยให้มันไม่ได้รับการตั้งค่าซึ่งเป็นสิ่งเดียวกับการตั้งค่าเป็น 1
) คุณจะได้รับพื้นที่ว่างทางด้านขวาของพรอมต์ขวา หากคุณตั้งค่า ZLE_RPROMPT_INDENT=0
พรอมต์ของคุณจะไปที่ขอบของเทอร์มินัล นี่คือวิธีการทำงานในทุกธีมยกเว้น PowerLevel9K
ปัญหา PowerLevel9K: PowerLevel9K#1292 มันได้รับการแก้ไขในสาขาการพัฒนาของ PowerLevel9K แต่การแก้ไขยังไม่ได้ทำให้เป็น master
เพิ่ม ZLE_RPROMPT_INDENT=0
ถึง ~/.zshrc
เพื่อให้ได้ระยะห่างเดียวกันที่ขอบด้านขวาของพรอมต์เช่นเดียวกับใน PowerLevel9K
หมายเหตุ: ZSH หลายรุ่นมีข้อบกพร่องที่ถูกเรียกใช้เมื่อคุณตั้งค่า ZLE_RPROMPT_INDENT=0
PowerLevel10K สามารถแก้ไขข้อบกพร่องเหล่านี้ได้เมื่อใช้สไตล์พรอมต์ PowerLine หากคุณสังเกตเห็นสิ่งประดิษฐ์ภาพในตำแหน่งที่พร้อมท์หรือตำแหน่งเคอร์เซอร์ผิดลองลบ ZLE_RPROMPT_INDENT
จาก ~/.zshrc
tl; dr: เพิ่ม POWERLEVEL9K_LEGACY_ICON_SPACING=true
to ~/.zshrc
เพื่อให้ได้ระยะห่างเช่นเดียวกับไอคอนเช่นเดียวกับ PowerLevel9k
ระยะห่างรอบไอคอนใน PowerLevel9K ไม่สอดคล้องกัน
ความไม่ลงรอยกันนี้เป็นแหล่งที่น่ารำคาญอย่างต่อเนื่องดังนั้นจึงได้รับการแก้ไขใน PowerLevel10K คุณสามารถเพิ่ม POWERLEVEL9K_LEGACY_ICON_SPACING=true
to ~/.zshrc
เพื่อให้ได้ระยะห่างรอบ ๆ ไอคอนเช่นเดียวกับใน PowerLevel9K
หมายเหตุ: ไม่ใช่ความคิดที่ดีที่จะกำหนด POWERLEVEL9K_LEGACY_ICON_SPACING
เมื่อใช้ p10k configure
source ~/.zshrc
เป็นความคิดที่ไม่ดีที่จะเรียกใช้ source ~/.zshrc
ไม่ว่าคุณจะใช้ PowerLevel10K หรือไม่ คำสั่งนี้อาจส่งผลให้เกิดข้อผิดพลาดแบบสุ่มรหัสที่ไม่เหมาะสมและการชะลอตัวของ ZSH
หากคุณได้ทำการเปลี่ยนแปลง ~/.zshrc
หรือไฟล์ที่มาจากที่มาให้รีสตาร์ท ZSH เพื่อนำไปใช้ วิธีที่น่าเชื่อถือที่สุดในการทำเช่นนี้คือการพิมพ์ exit
จากนั้นเริ่มเซสชัน ZSH ใหม่ คุณยังสามารถใช้ exec zsh
แม้ว่าจะไม่เทียบเท่ากับการรีสตาร์ท ZSH ให้เสร็จสมบูรณ์คำสั่งนี้มีความน่าเชื่อถือมากกว่า source ~/.zshrc
ดูสิ่งแปลก ๆ เกิดขึ้นหลังจากพิมพ์ source ~/.zshrc
หากคำแนะนำการติดตั้งไม่ได้ผลสำหรับคุณลองปิดใช้งานธีมปัจจุบันของคุณ (เพื่อให้คุณไม่มีธีม) จากนั้นติดตั้ง PowerLevel10K ด้วยตนเอง
~/.zshrc
และลบบรรทัดที่ตั้งค่า ZSH_THEME
มันอาจมีลักษณะเช่นนี้: ZSH_THEME="powerlevel9k/powerlevel9k"
~/.zshrc
และลบคำสั่ง zplug
ที่อ้างถึงธีมปัจจุบันของคุณ ตัวอย่างเช่นหากคุณกำลังใช้ PowerLevel9K ให้มองหา zplug bhilburn/powerlevel9k, use:powerlevel9k.zsh-theme
~/.zpreztorc
แล้วใส่ zstyle :prezto:module:prompt theme off
ลบคำสั่งอื่น ๆ ที่ตั้ง theme
เช่น zstyle :prezto:module:prompt theme powerlevel9k
~/.zshrc
และลบบรรทัดที่ตั้งค่า antigen theme
มันอาจมีลักษณะเช่นนี้: antigen theme powerlevel9k/powerlevel9k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~ /powerlevel10k
echo ' source ~/powerlevel10k/powerlevel10k.zsh-theme ' >> ~/.zshrc
วิธีการติดตั้งนี้จะไม่ทำให้สิ่งใดช้าลงหรือย่อย
ในสไตล์สายรุ้งไดเรกทอรีการทำงานปัจจุบันจะแสดงด้วยข้อความสีขาวสดใสบนพื้นหลังสีน้ำเงิน สีขาวได้รับการแก้ไขและมีลักษณะเหมือนกันเสมอ แต่การปรากฏตัวของ "สีน้ำเงิน" ถูกกำหนดโดยจานสีเทอร์มินัลของคุณ ถ้ามันเบามากอาจเป็นเรื่องยากที่จะเห็นข้อความสีขาว
มีหลายวิธีในการแก้ไขปัญหานี้
p10k configure
และเลือกสไตล์พรอมต์ที่อ่านได้มากขึ้นPOWERLEVEL9K_DIR_BACKGROUND
, POWERLEVEL9K_DIR_FOREGROUND
, POWERLEVEL9K_DIR_SHORTENED_FOREGROUND
, POWERLEVEL9K_DIR_ANCHOR_FOREGROUND
และ POWERLEVEL9K_DIR_ANCHOR_BOLD
คุณสามารถค้นหาได้ใน ~/.p10k.zsh
ที่เกี่ยวข้อง : สีพื้นหน้าไม่ถูกต้องในเทอร์มินัล VSCODE
โดยค่าเริ่มต้นเทอร์มินัล VSCODE อาจแทนที่สีเบื้องหน้าที่คุณเลือกด้วยสีที่แตกต่างกันโดยพลการ พฤติกรรมนี้สามารถปิดได้ในการตั้งค่า VSCODE
เมื่อคุณปรับขนาดหน้าต่างเทอร์มินัลไปมาในแนวนอนสองสามครั้งคุณอาจเห็นภาพที่น่าเกลียดนี้
TL; DR: ปัญหานี้เกิดขึ้นเมื่อเทอร์มินัลจะไหลออก ZSH เมื่อปรับขนาด มันไม่ได้เฉพาะเจาะจงกับ PowerLevel10K ดูการบรรเทา
หมายเหตุ: ส่วนนี้ใช้เพื่อบอกว่าปัญหาเกิดจากข้อผิดพลาดใน ZSH ในขณะที่มันเป็นความจริงที่เป็นไปได้ที่จะหลีกเลี่ยงปัญหาในหลาย ๆ สถานการณ์โดยการปรับเปลี่ยน ZSH แต่ก็ไม่สามารถแก้ไขได้อย่างสมบูรณ์ด้วยวิธีนี้ ดังนั้นจึงไม่ยุติธรรมที่จะตรึงความผิดบน ZSH
ปัญหาจะปรากฏขึ้นเมื่อระยะทางแนวตั้งระหว่างจุดเริ่มต้นของพรอมต์ปัจจุบันและเคอร์เซอร์ (ต่อจากนี้ VD
) จะเปลี่ยนแปลงเมื่อหน้าต่างเทอร์มินัลถูกปรับขนาด
เมื่อหน้าต่างเทอร์มินัลหดตัวในแนวนอนมีสองวิธีสำหรับเทอร์มินัลที่จะจัดการกับเส้นยาวที่ไม่พอดีอีกต่อไป: reflow หรือ ตัดทอน
เนื้อหาเทอร์มินัลก่อนที่จะหดตัว:
เทอร์มินัลรีดข้อความเมื่อหดตัว:
เทอร์มินัลตัดข้อความเมื่อหดตัว:
กลยุทธ์ที่ลดลงสามารถเปลี่ยนความสูงของเนื้อหาเทอร์มินัล หากเนื้อหาดังกล่าวเกิดขึ้นระหว่างจุดเริ่มต้นของพรอมต์ปัจจุบันและเคอร์เซอร์ ZSH จะพิมพ์พรอมต์บนบรรทัดผิด กลยุทธ์การตัดทอนไม่เคยเปลี่ยนความสูงของเนื้อหาเทอร์มินัลดังนั้นจึงไม่ก่อให้เกิดปัญหานี้
มาดูกันว่าปัญหาเกิดขึ้นได้อย่างไรในการเคลื่อนไหวช้า เราจะเริ่มต้นด้วยการเปิดตัว zsh -f
และวางรหัสต่อไปนี้:
function pause() { read -s }
functions -M pause 0
reset
print -l {1..3}
setopt prompt_subst
PROMPT= $' ${$((pause()))+}left>${(pl.$((COLUMNS-12))..-.)}<right n > '
เมื่อมีการขยาย PROMPT
จะเรียก pause
เพื่อให้เราสังเกตสถานะของเทอร์มินัล นี่คือสถานะเริ่มต้น:
ZSH ติดตามตำแหน่งเคอร์เซอร์เมื่อเทียบกับจุดเริ่มต้นของพรอมต์ปัจจุบัน ในกรณีนี้มันรู้ว่าเคอร์เซอร์เป็นหนึ่งบรรทัดด้านล่าง เมื่อเราหดหน้าต่างเทอร์มินัลดูเหมือนว่า:
ณ จุดนี้เทอร์มินัลส่ง SIGWINCH
ไปยัง ZSH เพื่อแจ้งให้ทราบเกี่ยวกับการเปลี่ยนแปลงในมิติเทอร์มินัล โปรดทราบว่าสัญญาณนี้จะถูกส่ง หลังจาก เนื้อหาของเทอร์มินัลถูกรีฟลอว์
เมื่อ ZSH ได้รับ SIGWINCH
มันจะพยายามลบพรอมต์ปัจจุบันและพิมพ์อีกครั้ง มันไปยังตำแหน่งที่ คิดว่า พรอมต์ปัจจุบันคือ - หนึ่งบรรทัดเหนือเคอร์เซอร์ (!) - ลบเนื้อหาเทอร์มินัลทั้งหมดที่ตามมาและพิมพ์พรอมต์ที่ยื่นออกมาที่นั่น อย่างไรก็ตามหลังจากปรับขนาดพรอมต์ไม่ได้อยู่เหนือเคอร์เซอร์อีกต่อไป มันคือสองบรรทัดด้านบน! ZSH จบลงด้วยการพิมพ์พรอมต์ใหม่หนึ่งบรรทัดต่ำเกินไป
ในกรณีนี้เราลงเอยด้วยเนื้อหาขยะที่ไม่พึงประสงค์เนื่องจาก VD
เพิ่มขึ้น เมื่อคุณทำให้หน้าต่างเทอร์มินัลกว้างขึ้น VD
ยังสามารถ ลดลง ซึ่งจะส่งผลให้ข้อความแจ้งใหม่ถูกพิมพ์สูงกว่าที่ตั้งใจไว้ซึ่งอาจลบเนื้อหาที่มีประโยชน์ในกระบวนการ
นี่คือตัวอย่างเพิ่มเติมที่หน้าต่างเทอร์มินัลหดตัวเพิ่มขึ้น VD
prompt_subst
โปรดทราบว่าเคอร์เซอร์อยู่ด้านล่างบรรทัดพรอมต์ (กด ESC-ENTER เพื่อไปที่นั่น)prompt_subst
ไม่มีพรอมต์ที่ถูกต้อง ที่นี่ VD
ถูกผูกไว้เพื่อเพิ่มขึ้นเมื่อการหดตัวของเทอร์มินัลเนื่องจากบรรทัดคำสั่งล้อมรอบ แพตช์ ZSH นี้แก้ไขปัญหาในบางเทอร์มินัล แนวคิดที่อยู่เบื้องหลังแพทช์คือการใช้ความสามารถในการขั้ว sc
(บันทึกเคอร์เซอร์) ก่อนที่จะพิมพ์พรอมต์และ rc
(คืนค่าเคอร์เซอร์) เพื่อย้ายเคอร์เซอร์กลับไปยังตำแหน่งเดิมเมื่อต้องรีเฟรช
แพตช์ใช้งานได้เฉพาะในเทอร์มินัลที่รีโมลตำแหน่งเคอร์เซอร์ที่บันทึกไว้พร้อมกับข้อความเมื่อมีการปรับขนาดหน้าต่างเทอร์มินัล แพตช์ไม่มีผลกระทบที่สังเกตได้ในเทอร์มินัลที่ไม่รีดข้อความในการปรับขนาด (ทั้ง ZSH ที่ได้รับการแก้ไขและไม่มีการจับภาพอย่างถูกต้อง) และในเทอร์มินัลที่รีฟลอรี่ข้อความ แต่ไม่ใช่ตำแหน่งเคอร์เซอร์ที่บันทึกไว้ ). กล่าวอีกนัยหนึ่งแพตช์แก้ไขปัญหาการปรับขนาดในบางเทอร์มินัลในขณะที่รักษาพฤติกรรมไม่เปลี่ยนแปลงผู้อื่น
มีวิธีการทางเลือกสองวิธีในการแก้ไข ZSH ที่อาจดูเหมือนจะทำงานได้อย่างรวดเร็วก่อน แต่ในความเป็นจริงไม่:
sc
ให้ใช้ความสามารถในเทอร์มินัล u7
เพื่อสอบถามตำแหน่งเคอร์เซอร์ปัจจุบันจากนั้น cup
เพื่อกลับไปที่มัน This doesn't work because the absolute position of the start of the current prompt changes when text gets reflown.VD
based on new terminal dimensions before attempting to refresh prompt. This doesn't work because Zsh doesn't know whether terminal reflows text or truncates it. If Zsh could somehow know that the terminal reflows text, this approach still wouldn't work on terminals that continuously reflow text and rapid-fire SIGWINCH
when the window is being resized. In such environment real terminal dimensions go out of sync with what Zsh thinks the dimensions are.There is no ETA for the patch making its way into upstream Zsh. See discussion.
There are a few mitigation options for this issue.
POWERLEVEL9K_TERM_SHELL_INTEGRATION=true
in ~/.p10k.zsh
.POWERLEVEL9K_SHOW_RULER=false
.POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
.POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=''
, POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=''
and POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=''
.POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()
. Right prompt on the last prompt line will cause resizing issues only when the cursor is below it. This isn't very common, so you might want to keep some elements in POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
provided that none of them are succeeded by newline
.When using Konsole with a non-monospace font, icons may be cut off on the right side. Here "non-monospace" refers to any font with glyphs wider than a single column, or wider than two columns for glyphs designated as "wide" in the Unicode standard.
The last line on the screenshot shows a cut off Arch Linux logo.
There are several mitigation options for this issue.
os_icon
prompt segment gets cut off, open ~/.p10k.zsh
, search for POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION
and change it as follows: typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION= ' ${P9K_CONTENT} ' # extra space at the end
~/.p10k.zsh
: typeset -g POWERLEVEL9K_LINUX_ARCH_ICON= ' Arch ' # plain "Arch" in place of a logo
os_icon
prompt segment gets cut off, open ~/.p10k.zsh
and remove os_icon
from POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
and POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS
.Note : Non-monospace fonts are not officially supported by Konsole.
Some fonts have this incorrect dotted icon in bold typeface. There are two ways to fix this issue.
~/.p10k.zsh
, search for POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION
and remove %B
from its value. typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION= ' ${P9K_CONTENT} ' # not bold
Powerlevel10k uses gitstatusd to inspect the state of git repositories. The project relies on the libgit2 library, which has some gaps in its implementation. Under some conditions, this may result in discrepancies between the real state of a git repository (reflected by git status
) and what gets shown in the Powerlevel10k prompt.
Most notably, libgit2 does not support skipHash
. If you see incorrect git status in prompt, run git config -l
and check whether skipHash
is enabled. If it is, consider disabling it. Keep in mind that skipHash
may be implicitly enabled when activating certain git features, such as manyFiles
.