डिफ़ॉल्ट रूप से, 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
।