वहाँ एक खोल है जो उदात्त पाठ में के रूप में फजी पूरा करने का समर्थन करता है?


14

मैं पार्टी का उपयोग कर रहा है और अगर वहाँ बैश या अन्य खोल में किसी भी प्लगइन जो मुझे यह करने के लिए अनुमति देता है मैं सोच रहा था cat tfnislong.txt+ [tab]करने के लिए पूरे चले cat ThisFileNameIsSoLong.txtउदात्त पाठ में जैसे टैब पूरा होने।


सिर्फ cat Th+ क्यों नहीं करते tab?
daviewales

1
@daviewales सभी 269 कारणों को प्रदर्शित करें?
फैक्स

जवाबों:


11

मुझे पता है कि https://github.com/mgalgs/fuzzy_bash_completion जो शेल फ़ंक्शन का एक गुच्छा है जिसका उपयोग किया जाता है complete

मुझे लगता है कि हम शायद थोड़ा बेहतर कर सकते थे, अधिक संक्षिप्त हो। पर्दाफाश करने के लिए समय अपने .bashrc या .profile ...

हमारे द्वारा उपयोग किया जाने वाला मूल हुक यह है:

complete -o nospace -o filenames -F fuzzypath cd ls cat

-F विकल्प का मतलब टैब-पूर्णता के लिए शेल फ़ंक्शन का उपयोग करना है, जहां विकल्प COMPREPLYचर में सेट किए गए हैं। उदाहरण के लिए:

समारोह फजीपथ () {
    अगर [-ज $ २] 
    फिर
        अनुपालन = (`एलएस`)
    अन्य
        DIRPATH = `प्रतिध्वनि" $ 2 "| gsed s [[^ /] * $ || '`
        बेसनमे = `प्रतिध्वनि" $ 2 "| मिल गया है। *। * / || '`
        फिल्टर = `गूंज" $ बेसनैम "| gsed 's | | | \ 0. * | g'`
        COMPREPLY = (`ls $ DIRPATH | grep -i" $ FILTER "| को ड्राय किया गया" s | ^ | $ DIRPATH | g "`)
    फाई
}

जहां DIRPATHसे पहले अपने रास्ते पर पिछले / कि आप टाइपिंग सब कुछ है और BASENAMEजहां अपने कर्सर वर्तमान में है।

FILTERवह जगह है जहाँ फ़ज़ी-नेस आता है। मूल रूप से, हमारे फ़ज़ी रेगेक्स का उत्पादन करने के लिए हर चार के बीच BASENAMEडालें और डालें .*

बाकी सिर्फ रेगेक्स को एलएस के साथ मिलाकर उत्पादन करना है COMPREPLY। आपको यहां और अधिक चतुर चीजें मिल सकती हैं, शायद साथ find

मुझे उपयोगी होने के लिए http://fahdshariff.blogspot.com/2011/04/writing-your-own-bash-completion.html भी मिला ।


6

आपको fzf उपयोगी लग सकता है । यह रूबी में लिखा गया एक सामान्य उद्देश्य फ़र्ज़ी खोजक है जिसे किसी भी चीज़ों की सूची के साथ उपयोग किया जा सकता है: फाइलें, प्रक्रियाएं, कमांड इतिहास, गिट शाखाएं, आदि।

इसकी स्थापित स्क्रिप्ट CTRL-Tआपके शेल के लिए कीबाइंडिंग सेटअप करेगी । निम्नलिखित GIF दिखाता है कि यह कैसे काम करता है।


FZF बढ़िया है! योगदान के लिए बहुत बहुत धन्यवाद। इसने मुझे कई हफ्तों के काम से बचा लिया..मैंने बज़ के लिए फजी पूरा लिखना शुरू कर दिया था जब मुझे किस्मत से FZF मिला। यह एकदम सही काम करता है, मुझे कॉल करने से पहले कर्सर की स्थिति को बचाने के लिए याद रखना था fzf.. (tput sc) और बाद में इसे फिर से tput rc
चालू करें

3

अपने अन्य उत्तर के साथ जाने के लिए, आप zsh में देखना चाहते हैं। यह बैश के साथ पीछे की ओर संगत है ताकि आप इसे प्रतिस्थापन में एक बूंद के रूप में उपयोग कर सकें, लेकिन यह महत्वपूर्ण रूप से विस्तारित सुविधाओं का समर्थन करता है और उनमें से एक बहुत ही विस्तारित संदर्भ जागरूक टैब पूर्णता है।

zsh पूर्णता अकसर किये गए सवाल उपयोग के मामलों पर विस्तार करता है, लेकिन मुझे विश्वास है कि आपके उदाहरण के अनुसार, आप COMPLETE_IN_WORDफ़ंक्शन में सबसे अधिक रुचि रखेंगे । यह काफी वांछित व्यवहार नहीं है, लेकिन यह करीब है। मुख्य बिंदु यह है कि बैश का उपयोग करने की तुलना में शायद अधिक स्वीकार्य तरीके से आधार कार्यक्षमता पर विस्तार करने के कई तरीके हैं।

यहां एक फजी मैच एक्सटेंशन है जो अनुमानित रूप से आप और अधिक विशेष रूप से चाहते हैं; zsh-fuzzy मैच

कुछ विचारों के लिए आप लोकप्रिय ओह-माय-ज़श फ्रेमवर्क पर एक नज़र डाल सकते हैं, जिसमें zsh को प्रबंधित करने और इसे विस्तारित करने के लिए कई कार्य हैं। यह आपकी इच्छा से अधिक है, सबसे अधिक संभावना है, लेकिन प्लगइन्स के तहत आप विभिन्न प्रकार की भूमिकाओं के लिए स्वत: पूर्ण स्क्रिप्ट पर ध्यान देंगे। क्षमताओं का अंदाजा लगाने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.