BashมีPROMPT_DIRTRIMตัวเลือกเช่นเมื่อฉันตั้งPROMPT_DIRTRIM=3แล้วเส้นทางยาวเช่น:
user@computer: /this/is/some/silly/path
จะแสดงแทนเป็น:
user@computer: .../some/silly/path
มีตัวเลือกที่คล้ายกันzshหรือไม่
BashมีPROMPT_DIRTRIMตัวเลือกเช่นเมื่อฉันตั้งPROMPT_DIRTRIM=3แล้วเส้นทางยาวเช่น:
user@computer: /this/is/some/silly/path
จะแสดงแทนเป็น:
user@computer: .../some/silly/path
มีตัวเลือกที่คล้ายกันzshหรือไม่
คำตอบ:
ในการรับเอฟเฟกต์ที่คล้ายกันbashซึ่งรวมถึง...ลอง:
%(4~|.../%3~|%~)
การตรวจสอบนี้ถ้าเส้นทางเป็นอย่างน้อย 4 องค์ประกอบยาว ( %(4~|true|false)) และถ้าเป็นจริงจะพิมพ์จุดบางคนที่มีช่วง 3 องค์ประกอบ ( .../%3~) %~มิฉะนั้นเส้นทางแบบเต็มจะถูกพิมพ์
ฉันสังเกตเห็นว่าbashดูเหมือนว่าจะทำให้เส้นทางในไดเรกทอรีภายในสั้นลงเช่น:
~/.../some/long/path
สำหรับเอฟเฟกต์ที่คล้ายกันคุณอาจต้องการใช้:
%(5~|%-1~/…/%3~|%4~)
การตรวจสอบนี้จะตรวจสอบว่าเส้นทางนั้นมีความยาวมากกว่า 5 องค์ประกอบและในกรณีนั้นจะพิมพ์องค์ประกอบแรก ( %-1~) บางจุด ( /…/) และองค์ประกอบ 3 รายการสุดท้าย มันไม่เหมือนกับพา ธ ที่ไม่ได้อยู่ในโฮมไดเร็กตอรี่ของคุณ, จะมีองค์ประกอบแรกที่จุดเริ่มต้น, ในขณะที่bashเพียงพิมพ์จุดในกรณีนั้น. ดังนั้น
/this/…/some/silly/path
แทน
.../some/silly/path
แต่นี่อาจไม่จำเป็นต้องเป็นสิ่งที่ไม่ดี
PROMPTตัวแปรสภาพแวดล้อมในของคุณ.zprofileเช่น:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrcและไม่จำเป็นต้องexportมีพารามิเตอร์ภายในของเชลล์PROMPTเลย
นอกเหนือจากคำตอบอื่น ๆ ที่ให้ไว้ที่นี่คุณยังสามารถใช้%<เพื่อตัดทอนเส้นทางไปยังจำนวนอักขระที่กำหนด ฉันคิดว่าสิ่งนี้ดีกว่าที่จะใช้%<n>dเนื่องจากองค์ประกอบของเส้นทางส่วนบุคคลอาจเห็นได้ค่อนข้างยาวในตัวเอง การใช้%<ให้ความยาวพร้อมต์สูงสุดที่คาดเดาได้มาก
ตัวอย่างเช่นในการตัดทอนองค์ประกอบพา ธ ด้วยการขยายเครื่องหมายตัวหนอน ( %~) ถึง 15 ตัวอักษรเพื่อแทนที่อักขระที่ถูกลบด้วย..คุณสามารถทำสิ่งนี้:
PROMPT='%n@%m:%15<..<%~%<<%# '
เอกสารนี้มีไว้ในคู่มือ Zsh ภายใต้การขยายพร้อมท์ตอนท้ายของหน้า
คุณสามารถใช้%3d การขยายพรอมต์ :
/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $
รูปแบบทั่วไปคือ%dถ้าจำนวนเต็มบวกใด ๆ ตามdระบุองค์ประกอบต่อท้ายเพื่อแสดงเส้นทางปัจจุบันศูนย์หมายถึงแสดงเส้นทางทั้งหมดจำนวนเต็มลบหมายถึงเส้นทางชั้นนำที่จะแสดง:
.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $
ดูhttp://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.htmlหรือman zshmisc
%d
%/
Current working directory. If an integer follows the ‘%’, it specifies a number of trailing components of the current working directory to show
%~
As %d and %/, but if the current working directory starts with $HOME, that part is replaced by a ‘~’.
เพื่อให้ได้สิ่งที่คล้ายกับPROMPT_DIRTRIM=3คุณสามารถใช้%3dหรือ%3~เช่น
% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d%
~/a/bว่าเป็นแทน.../a/bในการแก้ไขปัญหาที่คุณสามารถใช้~/a/b%(5~|…/%3~|%~)