2010-04-17 8 views
5

है, कभी-कभी मुझे मेरे लिए zsh अनुमानों के बजाय फ़ाइल नाम चाहिए। उदाहरण के लिए, मेरे पास एक उचित .png प्रत्यय के बिना एक पीएनजी फ़ाइल है, जो zsh को लगता है कि यह एक तस्वीर नहीं है और के तर्कों को पूरा करने के लिए Tab टाइप करते समय इसे सूचीबद्ध नहीं करेगा।फ़ाइल नाम को पूरा करने के लिए बाइंड कुंजी जहां कहीं भी संदर्भ Zsh

मुझे आश्चर्य है कि एक कुंजी अनुक्रम है जो संदर्भ में कहीं भी फ़ाइल नाम के लिए पूरा करता है, ^XC_correct_filename के लिए, या चीज़ करने के लिए zsh को कॉन्फ़िगर कैसे करें?

उत्तर

7

आप एक कुंजी तुम क्या चाहते हो के लिए बाध्य जोड़ सकते हैं:

zle -C complete complete-word complete-files 
bindkey '^X\t' complete 
complete-files() { compadd - $PREFIX* } 

संपादित करें: जोड़ा गया $PREFIX

आप अपने ~/.zshrc फाइल करने के लिए उन पंक्तियों में जोड़ सकते हैं।

पूरा होने सूची बनाता है यही कारण है कि सभी फाइलों को जब आप Ctrl प्रेस - टैब के बजाय हर कदम पर एक्सटैब। आप एक और कीस्ट्रोक संयोजन चुन सकते हैं जो आपको उपयुक्त बनाता है।

या ImageMagick हमेशा प्राप्तियां शामिल सभी फाइलें, संपादन की कोशिश फ़ाइल /usr/share/zsh/functions/Completion/Unix/_imagemagick (या समान) से पता चला नया एक (एक बैकअप पहले बनाना) और मौजूदा लाइन है कि _files साथ शुरू होता है बाहर टिप्पणी करने के लिए इस बदल सकते हैं और जोड़ने बनाने के लिए:

if (($#)); then 
    # _files "[email protected]" -g "*.(#i)(${~formats//:/|})(-.)" 
    _files "[email protected]" 
    return 
fi 
+0

उपयोगी लेकिन बहुत आदर्श नहीं। 'पूर्ण-फाइल' फ़ंक्शन केवल वर्तमान निर्देशिका के अंतर्गत फ़ाइलों को पूरा कर सकता है। मैंने इसके बजाय '_files' की कोशिश की है लेकिन' (eval) मिला: 1: कोई मिलान नहीं मिला: *: सभी-फाइलें 'त्रुटि। क्या बिल्ली के बाद पूरा होने पर ऐसा व्यवहार करने का कोई तरीका है? मैं इसे केवल 'प्रदर्शन' के लिए पूरा करना चाहता हूं, इसलिए उत्तरार्द्ध मेरी स्थिति के अनुरूप नहीं है। – lilydjwg

+0

@lilydjwg: मुझे समझ में नहीं आता है। मेरे लिए, पूरी तरह से प्रदर्शित करने के साथ पूर्ण-फाइल फ़ंक्शंस उसी तरह काम करता है जो बिल्ली के लिए नियमित समापन कार्य करता है (फ़ाइल-प्रकार प्रत्यय को छोड़कर "@" और "*" को छोड़कर नहीं जोड़ा जाता है। जब मैं बिल्ली के लिए नियमित टैब-पूर्णता करता हूं मुझे केवल वर्तमान निर्देशिका में फाइलें मिलती हैं। –

+0

मेरा मतलब है, अगर मैं पथ टाइप करता हूं (उदाहरण के लिए ./ या ../ या abc /, जो मैंने टाइप किया है में '/' के साथ) और फिर फ़ंक्शन ट्रिगर करें, कुछ भी नहीं होगा दिखाया गया है। – lilydjwg

संबंधित मुद्दे