मैं पार्टी का उपयोग कर रहा है और अगर वहाँ बैश या अन्य खोल में किसी भी प्लगइन जो मुझे यह करने के लिए अनुमति देता है मैं सोच रहा था
cat tfnislong.txt
+ [tab]
करने के लिए पूरे चले cat ThisFileNameIsSoLong.txt
उदात्त पाठ में जैसे टैब पूरा होने।
मैं पार्टी का उपयोग कर रहा है और अगर वहाँ बैश या अन्य खोल में किसी भी प्लगइन जो मुझे यह करने के लिए अनुमति देता है मैं सोच रहा था
cat tfnislong.txt
+ [tab]
करने के लिए पूरे चले cat ThisFileNameIsSoLong.txt
उदात्त पाठ में जैसे टैब पूरा होने।
जवाबों:
मुझे पता है कि 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 भी मिला ।
आपको fzf उपयोगी लग सकता है । यह रूबी में लिखा गया एक सामान्य उद्देश्य फ़र्ज़ी खोजक है जिसे किसी भी चीज़ों की सूची के साथ उपयोग किया जा सकता है: फाइलें, प्रक्रियाएं, कमांड इतिहास, गिट शाखाएं, आदि।
इसकी स्थापित स्क्रिप्ट CTRL-T
आपके शेल के लिए कीबाइंडिंग सेटअप करेगी । निम्नलिखित GIF दिखाता है कि यह कैसे काम करता है।
fzf
.. (tput sc) और बाद में इसे फिर से tput rc
अपने अन्य उत्तर के साथ जाने के लिए, आप zsh में देखना चाहते हैं। यह बैश के साथ पीछे की ओर संगत है ताकि आप इसे प्रतिस्थापन में एक बूंद के रूप में उपयोग कर सकें, लेकिन यह महत्वपूर्ण रूप से विस्तारित सुविधाओं का समर्थन करता है और उनमें से एक बहुत ही विस्तारित संदर्भ जागरूक टैब पूर्णता है।
zsh पूर्णता अकसर किये गए सवाल उपयोग के मामलों पर विस्तार करता है, लेकिन मुझे विश्वास है कि आपके उदाहरण के अनुसार, आप COMPLETE_IN_WORD
फ़ंक्शन में सबसे अधिक रुचि रखेंगे । यह काफी वांछित व्यवहार नहीं है, लेकिन यह करीब है। मुख्य बिंदु यह है कि बैश का उपयोग करने की तुलना में शायद अधिक स्वीकार्य तरीके से आधार कार्यक्षमता पर विस्तार करने के कई तरीके हैं।
यहां एक फजी मैच एक्सटेंशन है जो अनुमानित रूप से आप और अधिक विशेष रूप से चाहते हैं; zsh-fuzzy मैच
कुछ विचारों के लिए आप लोकप्रिय ओह-माय-ज़श फ्रेमवर्क पर एक नज़र डाल सकते हैं, जिसमें zsh को प्रबंधित करने और इसे विस्तारित करने के लिए कई कार्य हैं। यह आपकी इच्छा से अधिक है, सबसे अधिक संभावना है, लेकिन प्लगइन्स के तहत आप विभिन्न प्रकार की भूमिकाओं के लिए स्वत: पूर्ण स्क्रिप्ट पर ध्यान देंगे। क्षमताओं का अंदाजा लगाने के लिए।
cat Th
+ क्यों नहीं करतेtab
?