डिफ़ॉल्ट रूप से, zsh का पूरा इंजन केवल आपके द्वारा लिखे गए कुछ को जोड़ने की कोशिश करता है। आपने इसे उपसर्ग जोड़ने के साथ-साथ जोड़ने का प्रयास किया। सरल इंटरेक्टिव पूरा होने वाला कॉन्फ़िगरेशन इंजन ( compinstall) "मिलान नियंत्रण → सबरिंग पूर्णता" के तहत यह प्रदान करता है। यह आपके जैसे एक पंक्ति सम्मिलित करता है .zshrc:
zstyle ':completion:*' matcher-list '' 'l:|=* r:|=*'
zstyleअंतर्निहित सेट (अधिकतर) पूरा होने सेटिंग्स। matcher-listपूरा होने शैली तरीके लगातार कोशिश करने के लिए की एक सूची, रोक जब वहाँ कम से कम एक मैच है। खाली स्ट्रिंग का अर्थ है डिफ़ॉल्ट पूर्णता (केवल प्रत्यय)। मिलान नियंत्रण जादू l:|=* r:|=*साधन एक उपसर्ग मिलान का उपयोग करना *और एक प्रत्यय मिलान *, यानी किसी भी उपसर्ग और प्रत्यय।
आप उन उपसर्गों को मना कर सकते हैं जो _पूरी तरह से शुरू होते हैं। यह अभी भी उन शब्दों को पूरा करने की अनुमति देता है _जो उपसर्ग जोड़कर शुरू होते हैं , और पूर्ण होते हैं, लेकिन उपसर्ग के साथ शुरू नहीं हो सकता है _।
zstyle ':completion:*' matcher-list '' 'l:|=[^_]* r:|=*'
यह सभी पूर्णताओं पर लागू होता है, न कि केवल कमांड नामों को पूरा करने पर। मुझे नहीं पता कि इसे कमांड नामों तक कैसे सीमित किया जाए।
इसके साथ शुरू होने वाले कमांड नामों को अधिक सटीक रूप से बाहर करने का एक तरीका होना चाहिए _, लेकिन मुझे नहीं पता कि कैसे। पहली शुरुआत ignored-patternsपूरी होने वाली शैली के साथ है।
zstyle ':completion:*:*:-command-:*:*' ignored-patterns '_*'
इसके साथ शुरू होने वाले मैचों को शामिल नहीं करता है _; हालाँकि, अगर कोई मैच नहीं होता है, तो zsh अनदेखी नियमों के बिना फिर से कोशिश करता है। यह अच्छा है कि यदि पहली जगह में अंडरस्कोर के साथ कमांड शुरू हुई, तो यह इस दूसरे पास में पूरा हो जाएगा। बुरा हिस्सा यह है कि zsh इस प्रकार वैसे भी अंडरस्कोर जोड़ने की कोशिश करेगा यदि कोई मैच नहीं है, इसलिए यदि आपके पास है viऔर viewनहीं है vimतो दबाने के Tabबाद viप्रस्ताव देगा viऔर viewनहीं _vim, लेकिन यदि आप टाइप करते हैं vimतो पूरा होने की पेशकश करेगा _vim।