ใน zsh และ bash ถ้าฉันพิมพ์ ls c<TAB>
มันจะแสดงชื่อไฟล์ทุกคนเริ่มต้นด้วยค ถ้าฉันพิมพ์แทน ls c*<TAB>
bash ทำงานในลักษณะเดียวกัน แต่ zsh จะแทนที่ c*
ด้วยรายการของทุกไฟล์ที่ขึ้นต้นด้วย c มีวิธีใดบ้างที่จะทำให้ zshs ทำงานเหมือนทุบตี?
ใน zsh และ bash ถ้าฉันพิมพ์ ls c<TAB>
มันจะแสดงชื่อไฟล์ทุกคนเริ่มต้นด้วยค ถ้าฉันพิมพ์แทน ls c*<TAB>
bash ทำงานในลักษณะเดียวกัน แต่ zsh จะแทนที่ c*
ด้วยรายการของทุกไฟล์ที่ขึ้นต้นด้วย c มีวิธีใดบ้างที่จะทำให้ zshs ทำงานเหมือนทุบตี?
คำตอบ:
setopt GLOB_COMPLETE
จาก man zshoptions
:
GLOB_COMPLETE
เมื่อคำปัจจุบันมีรูปแบบเป็นวงกลมห้ามแทรกคำทั้งหมดที่เกิดจากการขยายตัว แต่สร้างการจับคู่เพื่อความสมบูรณ์และวนรอบคำเหล่านั้นเช่น MENU_COMPLETE การจับคู่จะถูกสร้างขึ้นหากมีการเพิ่ม ‘*’ ในตอนท้ายของคำหรือแทรกที่เคอร์เซอร์เมื่อตั้งค่า COMPLETE_IN_WORD นี่ใช้การจับคู่รูปแบบไม่ใช่ globbing ดังนั้นจึงใช้งานได้ไม่เฉพาะกับไฟล์ แต่สำหรับการทำให้สมบูรณ์เช่นตัวเลือกชื่อผู้ใช้ ฯลฯ
โปรดทราบว่าเมื่อใช้การจับคู่รูปแบบการควบคุมการจับคู่ (ตัวอย่างเช่นการจับคู่ตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่) ไม่สามารถใช้ ข้อ จำกัด นี้จะใช้เมื่อคำปัจจุบันมีรูปแบบเท่านั้น เพียงเปิดใช้ตัวเลือก GLOB_COMPLETE จะไม่มีผลกระทบนี้
menu_complete
และ auto_list
.