2011-12-04 9 views
6

मैं अपने ऑटो पूर्ण फ़ंक्शन को ls कमांड पर हुक करने के लिए compctl -K _my_cpl ls का उपयोग करता हूं। फ़ंक्शन इंडेक्स फ़ाइल से नामों की एक सूची देता है।zsh ऑटो पूर्ण फ़ंक्शन से अतिरिक्त स्थान को कैसे निकालें?

हालांकि, प्रत्येक पूर्ण होने के बाद zsh हमेशा एक स्थान जोड़ता है। यदि मैं एकाधिक स्तर निर्देशिका को स्वतः पूर्ण करना चाहता हूं, तो मुझे हर बार एक स्थान निकालना होगा। क्या अतिरिक्त स्पेस को हटाने के लिए कोई तरीका है जैसे कि -o nospace विकल्प बैश पूर्ण कमांड में?

मैंने zstyle ':completion:*' add-space false कमांड का परीक्षण किया और यह काम नहीं करता है। धन्यवाद।

_my_cpl() { 
local cur last opts 

# current word in command line. 
read -cA cur 
last=$cur[-1] 

# grep all directories and file names under current directory level. 
opts=`egrep "${last}[^/]*[$|/]*" ~/index -o |uniq` 

reply=($=opts) 
} 
compctl -K _my_cpl ls 
+0

zsh में एक bashcompinit मॉड्यूल है। मैं अपने काम को चारों ओर एक काम के रूप में zsh पर पूरा कर सकता हूं। ऑटोलोड लोड bashcompinit bashcompinit – leo

उत्तर

2
compctl -K _my_cpl -S '' ls 

यह सवाल आपसे पूछा जवाब देता है, लेकिन यह लचीला पर्याप्त कि आप क्या करना चाहते हैं के लिए नहीं हो सकता। विशेष रूप से, यह दृष्टिकोण आपको निर्देशिकाओं और नियमित फ़ाइलों के लिए एक अलग प्रत्यय निर्दिष्ट करने नहीं देता है। यदि आप चाहते हैं, तो मुझे लगता है कि आपको "नई" समापन प्रणाली पर स्विच करने की आवश्यकता है और अलग-अलग -S तर्कों के साथ compadd पर अलग-अलग कॉल करने की आवश्यकता है।

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