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 Linux
cd ~/dktop<tab>
cd ~/Desktop