เครื่องมือสร้างพรอมต์ที่สวยงามและมีประโยชน์สำหรับ Bash, ZSH, Fish และ tcsh:
ข้อความแจ้งที่สร้างขึ้นได้รับการออกแบบให้มีลักษณะคล้ายกับ Powerline แต่มิฉะนั้น โปรเจ็กต์นี้ไม่มีความเกี่ยวข้องกับ Powerline
สารบัญ ที่สร้างด้วย DocToc
ระบบควบคุมเวอร์ชันทั้งหมดที่รองรับโดย Powerline Shell ช่วยให้คุณดูสถานะของ repo ของคุณได้อย่างรวดเร็ว:
⇡
หรือ ⇣
บ่งชี้ว่าการกดหรือดึงคอมไพล์ค้างอยู่หรือไม่หากไฟล์ได้รับการแก้ไขหรือขัดแย้งกัน สถานการณ์จะถูกสรุปด้วยสัญลักษณ์ต่อไปนี้:
✎
-- ไฟล์ได้รับการแก้ไข (แต่ไม่ได้ถูกจัดเตรียมสำหรับการคอมมิต ในหน่วยคอมไพล์)✔
-- ไฟล์ถูกจัดฉากเพื่อคอมมิต (git) หรือเพิ่มเพื่อติดตาม✼
-- ไฟล์มีข้อขัดแย้ง?
-- ไฟล์ไม่ได้รับการติดตามแต่ละไฟล์จะมีตัวเลขอยู่ข้างๆ หากมีไฟล์ตรงกันมากกว่าหนึ่งไฟล์
เซ็กเมนต์สามารถเริ่มต้นด้วยสัญลักษณ์ที่แสดงถึงระบบควบคุมเวอร์ชันที่ใช้งานอยู่ ในการแสดงสัญลักษณ์นั้น ไฟล์การกำหนดค่าต้องมีตัวแปร vcs
พร้อมตัวเลือก show_symbol
ที่ตั้งค่าเป็น true
(ดูการกำหนดค่าเซ็กเมนต์)
สคริปต์นี้ใช้รหัสสี ANSI เพื่อแสดงสีในเทอร์มินัล สิ่งเหล่านี้ไม่สามารถพกพาได้ ดังนั้นอาจไม่ทำงานสำหรับคุณทันที แต่ลองตั้งค่า $TERM ของคุณเป็น xterm-256color
แก้ไขแบบอักษรที่คุณใช้สำหรับเทอร์มินัลของคุณ: ดูแบบอักษร Powerline
ติดตั้งโดยใช้ pip:
pip install powerline-shell
( คุณสามารถใช้ตัวเลือก --user
เพื่อติดตั้งสำหรับผู้ใช้ของคุณเท่านั้น หากคุณต้องการ แต่คุณอาจต้องแก้ไข PATH
เพื่อให้สิ่งนี้ทำงานได้อย่างถูกต้อง )
git clone https://github.com/b-ryan/powerline-shell
cd powerline-shell
python setup.py install
เพิ่มสิ่งต่อไปนี้ลงในไฟล์ .bashrc
ของคุณ:
function _update_ps1() {
PS1=$(powerline-shell $?)
}
if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi
หมายเหตุ: บน macOS คุณต้องเพิ่มสิ่งนี้ลงใน .bash_profile
, .bash_login
หรือ .profile
อย่างใดอย่างหนึ่ง macOS จะดำเนินการไฟล์ตามลำดับข้างต้น และจะหยุดดำเนินการที่ไฟล์แรกที่พบ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับลำดับความสำคัญ โปรดดูที่ส่วน INVOCATION ใน man bash
เพิ่มสิ่งต่อไปนี้ใน .zshrc
ของคุณ :
function powerline_precmd() {
PS1="$(powerline-shell --shell zsh $?)"
}
function install_powerline_precmd() {
for s in "${precmd_functions[@]}"; do
if [ "$s" = "powerline_precmd" ]; then
return
fi
done
precmd_functions+=(powerline_precmd)
}
if [ "$TERM" != "linux" -a -x "$(command -v powerline-shell)" ]; then
install_powerline_precmd
fi
กำหนด fish_prompt
ใหม่ใน ~/.config/fish/config.fish:
function fish_prompt
powerline-shell --shell bare $status
end
เพิ่มสิ่งต่อไปนี้ใน .tcshrc
ของคุณ :
alias precmd 'set prompt="`powerline-shell --shell tcsh $?`"'
Powerline-shell สามารถปรับแต่งได้โดยใช้ไฟล์ปรับแต่ง ไฟล์นี้คาดว่าจะอยู่ที่ ~/.config/powerline-shell/config.json
คุณสามารถสร้างการกำหนดค่าเริ่มต้นที่ตำแหน่งนี้โดยใช้:
mkdir -p ~/.config/powerline-shell &&
powerline-shell --generate-config > ~/.config/powerline-shell/config.json
(ตามตัวอย่าง ไฟล์กำหนดค่าของฉันอยู่ที่นี่: ที่นี่)
เมื่อคุณสร้างไฟล์กำหนดค่าแล้ว ตอนนี้คุณสามารถเริ่มเพิ่มหรือลบ "เซ็กเมนต์" ซึ่งเป็นส่วนประกอบสำคัญของเชลล์ของคุณได้ รายชื่อกลุ่มที่มีอยู่สามารถดูได้ที่นี่
คุณยังสร้างกลุ่มที่กำหนดเองได้ด้วย เริ่มต้นด้วยการคัดลอกส่วนที่มีอยู่ในลักษณะนี้ ตรวจสอบให้แน่ใจว่าได้เปลี่ยนการนำเข้าที่เกี่ยวข้องเป็นการนำเข้าแบบสัมบูรณ์ เช่น. เปลี่ยนสิ่งต่าง ๆ เช่น:
from .. utils import BasicSegment
ถึง
from powerline_shell . utils import BasicSegment
จากนั้นเปลี่ยนฟังก์ชัน add_to_powerline
เพื่อทำสิ่งที่คุณต้องการ จากนั้นคุณสามารถใช้ส่วนนี้ในการกำหนดค่าของคุณโดยใส่เส้นทางไปยังส่วนของคุณในส่วนส่วน เช่น:
"segments" : [
" ~/path/to/segment.py "
]
มีสองส่วนพิเศษที่มีอยู่ stdout
ยอมรับคำสั่งที่กำหนดเองและผลลัพธ์ของคำสั่งจะถูกใส่ลงในพร้อมท์ของคุณ env
รับตัวแปรสภาพแวดล้อมและค่าของตัวแปรจะถูกตั้งค่าในพรอมต์ของคุณ ตัวอย่างเช่น การกำหนดค่าของคุณอาจเป็นดังนี้:
{
"segments": [
"cwd",
"git",
{
"type": "stdout",
"command": ["echo", "hi"],
"fg_color": 22,
"bg_color": 161
},
{
"type": "env",
"var": "DOCKER_MACHINE_NAME"
},
]
}
ตามค่าเริ่มต้น อักขระ Unicode (คล้ายกับสัญลักษณ์ >) จะถูกใช้เพื่อแยกแต่ละส่วน สิ่งนี้สามารถเปลี่ยนแปลงได้โดยการเปลี่ยนตัวเลือก "โหมด" ในไฟล์กำหนดค่า โหมดที่ใช้ได้คือ:
patched
- ค่าเริ่มต้นcompatible
- ความพยายามในการใช้อักขระที่อาจมีอยู่แล้วโดยใช้แบบอักษรที่คุณเลือกflat
- ไม่มีการใช้ตัวคั่นระหว่างส่วน ทำให้แต่ละส่วนมีลักษณะเป็นรูปสี่เหลี่ยมผืนผ้า (และยังช่วยประหยัดพื้นที่) ไดเร็กทอรี powerline_shell/themes
จะจัดเก็บธีมสำหรับพร้อมต์ของคุณ ซึ่งโดยพื้นฐานแล้วคือค่าสีที่ใช้โดยเซ็กเมนต์ default.py
กำหนดธีมเริ่มต้นซึ่งสามารถใช้ได้แบบสแตนด์อโลน และธีมอื่นๆ ทั้งหมดจะกลับไปใช้ธีมนั้นหากสีหายไปสำหรับส่วนใดๆ
หากคุณต้องการสร้างธีมแบบกำหนดเอง ให้เริ่มด้วยการคัดลอกหนึ่งในธีมที่มีอยู่ เช่น ธีมพื้นฐาน และอัปเดต ~/.config/powerline-shell/config.json
ของคุณโดยตั้งค่า "theme"
เป็นเส้นทางของไฟล์ ตัวอย่างเช่น การกำหนดค่าของคุณอาจมี:
"theme": "~/mythemes/my-great-theme.py"
จากนั้นคุณสามารถแก้ไขรหัสสีได้ตามต้องการ สีของธีมจะถูกระบุโดยใช้รหัสสี Xterm-256
สคริปต์สำหรับทดสอบการผสมสีมีให้ที่ colortest.py
โปรดทราบว่าสีที่คุณเห็นอาจแตกต่างกันไปขึ้นอยู่กับเทอร์มินัลของคุณ เมื่อออกแบบธีม โปรดทดสอบธีมของคุณบนเทอร์มินัลหลายเครื่อง โดยเฉพาะอย่างยิ่งกับการตั้งค่าเริ่มต้น
บางเซ็กเมนต์รองรับการกำหนดค่าเพิ่มเติม ตัวเลือกสำหรับเซ็กเมนต์จะซ้อนกันอยู่ใต้ชื่อเซ็กเมนต์นั้นเอง ตัวอย่างเช่น ตัวเลือกทั้งหมดสำหรับเซ็กเมนต์ cwd
ได้รับการตั้งค่าใน ~/.config/powerline-shell/config.json
เช่น:
{
"segments": [...],
"cwd": {
options go here
}
"theme": "theme-name",
"vcs": {
options go here
}
}
ตัวเลือกสำหรับเซ็กเมนต์ cwd
คือ:
mode
: หากเป็น plain
ข้อความธรรมดาจะถูกใช้เพื่อแสดง cwd หาก dironly
จะแสดงเฉพาะไดเร็กทอรีปัจจุบันเท่านั้น มิฉะนั้นจะขยาย cwd ออกเป็นแต่ละไดเร็กทอรีmax_depth
: จำนวนไดเรกทอรีสูงสุดที่จะแสดงในเส้นทางmax_dir_size
: จำนวนอักขระสูงสุดที่แสดงสำหรับแต่ละไดเร็กทอรีในพาธfull_cwd
: หากเป็นจริง ไดเร็กทอรีสุดท้ายจะไม่ถูกย่อให้สั้นลงเมื่อใช้ max_dir_size
ส่วน hostname
มีทางเลือกเดียว:
colorize
: หากเป็นจริง ชื่อโฮสต์จะถูกทำให้เป็นสีตามแฮชของตัวเอง เซ็กเมนต์ vcs
มีทางเลือกเดียว:
show_symbol
: หากเป็น true
เซ็กเมนต์ระบบควบคุมเวอร์ชันจะเริ่มต้นด้วยสัญลักษณ์ที่แสดงถึงระบบควบคุมเวอร์ชันเฉพาะที่ใช้ในไดเร็กทอรีปัจจุบัน ตัวเลือกสำหรับกลุ่ม battery
คือ:
always_show_percentage
: หากเป็นจริง แสดงเปอร์เซ็นต์เมื่อชาร์จเต็มด้วย AClow_threshold
: เปอร์เซ็นต์เกณฑ์สำหรับสีของตัวบ่งชี้แบตเตอรี่เหลือน้อย ตัวเลือกสำหรับส่วน time
คือ:
format
: จัดรูปแบบสตริงที่ใช้โดยฟังก์ชัน strftime เช่น %H:%M
ไดเร็กทอรี powerline_shell/segments
มีสคริปต์ python ที่ถูกฉีดเข้าไปในไฟล์เดียว powerline_shell_base.py
สคริปต์แต่ละส่วนจะกำหนดฟังก์ชันที่แทรกหนึ่งหรือหลายส่วนลงในพร้อมท์ หากคุณต้องการเพิ่มเซ็กเมนต์ใหม่ เพียงสร้างไฟล์ใหม่ในไดเร็กทอรีเซ็กเมนต์
ตรวจสอบให้แน่ใจว่าสคริปต์ของคุณไม่ได้แนะนำโกลบอลใหม่ซึ่งอาจขัดแย้งกับสคริปต์อื่น สคริปต์ของคุณควรล้มเหลวโดยไม่ต้องแจ้งให้ทราบและทำงานอย่างรวดเร็วในทุกสถานการณ์
ตรวจสอบให้แน่ใจว่าคุณได้แนะนำสีเริ่มต้นใหม่ใน themes/default.py
สำหรับทุกส่วนใหม่ที่คุณสร้างขึ้น ทดสอบกลุ่มของคุณด้วยธีมนี้ก่อน
คุณควรเพิ่มการทดสอบสำหรับเซ็กเมนต์ของคุณให้ดีที่สุดเท่าที่จะเป็นไปได้ ยินดีต้อนรับทั้งการทดสอบหน่วยและบูรณาการ รันการทดสอบของคุณโดยการรันสคริปต์ test.sh
ใช้ docker
เพื่อจัดการการขึ้นต่อกันและสภาพแวดล้อม หรือคุณสามารถรันคำสั่ง nosetests
หลังจากติดตั้งข้อกำหนดใน requirements-dev.txt
ดูคำถามที่พบบ่อย หากคุณยังคงประสบปัญหา โปรดเปิดปัญหา