ฉันจะทำให้การเติมข้อความอัตโนมัติของ zsh เป็น wildcard ให้สมบูรณ์ได้อย่างไร


3

ใน zsh และ bash ถ้าฉันพิมพ์ ls c<TAB> มันจะแสดงชื่อไฟล์ทุกคนเริ่มต้นด้วยค ถ้าฉันพิมพ์แทน ls c*<TAB>bash ทำงานในลักษณะเดียวกัน แต่ zsh จะแทนที่ c* ด้วยรายการของทุกไฟล์ที่ขึ้นต้นด้วย c มีวิธีใดบ้างที่จะทำให้ zshs ทำงานเหมือนทุบตี?

คำตอบ:


4
setopt GLOB_COMPLETE

จาก man zshoptions:

GLOB_COMPLETE

เมื่อคำปัจจุบันมีรูปแบบเป็นวงกลมห้ามแทรกคำทั้งหมดที่เกิดจากการขยายตัว แต่สร้างการจับคู่เพื่อความสมบูรณ์และวนรอบคำเหล่านั้นเช่น MENU_COMPLETE การจับคู่จะถูกสร้างขึ้นหากมีการเพิ่ม ‘*’ ในตอนท้ายของคำหรือแทรกที่เคอร์เซอร์เมื่อตั้งค่า COMPLETE_IN_WORD นี่ใช้การจับคู่รูปแบบไม่ใช่ globbing ดังนั้นจึงใช้งานได้ไม่เฉพาะกับไฟล์ แต่สำหรับการทำให้สมบูรณ์เช่นตัวเลือกชื่อผู้ใช้ ฯลฯ

โปรดทราบว่าเมื่อใช้การจับคู่รูปแบบการควบคุมการจับคู่ (ตัวอย่างเช่นการจับคู่ตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่) ไม่สามารถใช้ ข้อ จำกัด นี้จะใช้เมื่อคำปัจจุบันมีรูปแบบเท่านั้น เพียงเปิดใช้ตัวเลือก GLOB_COMPLETE จะไม่มีผลกระทบนี้


นั่นเป็นเพียงแทนที่รูปแบบด้วยการจับคู่ครั้งแรกมากกว่าการแข่งขันทั้งหมด ฉันต้องการเฉพาะรายการที่ตรงกัน
m42a

หากคุณกดปุ่มแท็บต่อไปมันควรวนไปตามการแข่งขัน หากยังไม่ได้แสดงรายการการแข่งขันคุณอาจต้องยุ่งกับตัวเลือกการเติม zsh ของคุณ
mkarasek

ฉันไม่ต้องการวนรอบตัวเลือก แต่ฉันต้องการแสดงรายการเท่านั้น
m42a

@ m42a: คุณเคยคิดว่าจะทำอย่างไร
Smith John

@ m42a คุณอาจต้องการตั้งค่า menu_complete และ auto_list.
PythonNut
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.