zshฉันต้องการกรณีตายเสร็จสิ้นเลือนสำหรับไฟล์และไดเรกทอรีใน หลังจากอ่านคู่มือสองสามชั่วโมงนี่คือสิ่งที่ฉันคิด:
zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
นอกจากนี้ฉันต้องการกดTABหนึ่งครั้งเพื่อแสดงความสำเร็จที่เป็นไปได้เพียงปรับเปลี่ยนสิ่งที่ฉันได้พิมพ์หากมีความสมบูรณ์เพียงอย่างเดียว จากนั้นการกดTABครั้งที่สองควรทำให้ฉันเข้าสู่โหมด "เสร็จสิ้นเมนู" จากคู่มือฉันพบสิ่งนี้:
zstyle ':completion:*' menu select
ตอนนี้ทุกอย่างทำงานได้ตามที่ควรยกเว้นในกรณีเดียว ฉันมีสองโฟลเดอร์Desktopและ.rstudio-desktopในโฮมไดเร็กตอรี่ของฉัน ตั้งแต่ฉันมีsetopt globdotsฉันคาดว่าจะพิมพ์ต่อไปนี้:
$ cd ~/dktop<TAB>
ที่จะออกคำสั่งของฉันเป็นเข้ามาและแสดงเป็นผู้สมัครเสร็จสิ้นและDesktop .rstudio-desktopแต่มันจะลบ dktopทิ้งฉันด้วยสิ่งต่อไปนี้:
$ cd ~/
ฉันดูคู่มือที่เกี่ยวข้องทั้งหมดคำแนะนำคำถามการแลกเปลี่ยนกองและแหล่งข้อมูลอื่น ๆ แต่สิ่งที่ฉันทำฉันไม่สามารถทำงานนี้ได้
ที่น่าสนใจคือถ้าฉันอยู่ในโฮมไดเร็กตอรี่แล้วพิมพ์ต่อไปนี้ทุกอย่างจะทำงานได้ตามที่คาดไว้:
$ cd dktop<TAB>
นั่นคือเป็นเพียงปัญหาของเซกเมนต์ของเส้นทางที่ไม่นำหน้า (และคุณสามารถเห็นได้C-x hว่าสิ่งนี้สอดคล้องกับdirectoriesแท็กมากกว่าที่local-directoriesจะใช้แท็ก)
เพื่อให้สามารถทำซ้ำได้ง่ายนี่คือสิ่ง~/.zshrcที่จะสร้างสถานการณ์และพฤติกรรมที่อธิบายไว้ข้างต้น (ทดสอบบนเครื่องเสมือน El Capitan ใหม่ด้วยzshจาก Homebrew)
zsh 5.3.1กับ OS X ปัญหาจะเกิดขึ้นอีกครั้ง เป็นที่น่าสนใจว่ามีความแตกต่างระหว่างระบบปฏิบัติการ
zsh 5.3.1อัตราผลตอบแทนArch Linuxcd ~/dktop<tab>cd ~/Desktop