shell - मैं अपने स्वयं के स्क्रिप्ट से मछली शेल को टैब समापन कैसे प्रदान करूं?




autocomplete tab-completion (2)

मैं उबंटू 13.10 और मछली 2.1.0 चल रहा हूं। कमांड लाइन से कुछ कार्य करने के लिए मैं खुद को एक पायथन स्क्रिप्ट लिखना चाहता हूं स्क्रिप्ट को कमांड लाइन तर्कों की आवश्यकता होगी।

मैं अपनी स्क्रिप्ट कैसे लिख सकता हूं, जैसे कि मछलियां किसी तर्क के लिए संभावित मूल्यों का अनुरोध कर सकती हैं। संभावित मूल्यों की सूची गतिशील है यही है, यह प्रोग्रामुसार निर्धारित किया जाएगा (उदाहरण के लिए कुछ मानदंडों से मिलान फ़ोल्डर नामों की सूची)।

अंतिम परिणाम मैं लक्ष्य कर रहा हूँ ऐसा कुछ है:

[email protected] ~> myprog argument=fol<TAB>
folder1  folder2  folder3

जहां myprog मेरी स्क्रिप्ट फ़ाइल है, argument तर्क नाम और folder1 आदि मान्य स्क्रिप्ट में कुछ फ़ंक्शन द्वारा उत्पन्न मान हैं myprog

क्या यह संभव है और यदि ऐसा हो तो कैसे?


आपको अपनी स्क्रिप्ट के लिए एक मछली स्वत: पूर्ण फ़ंक्शन बनाना चाहिए जैसा कि यहां प्रस्तावित किया गया है और इसे source या इसे आपके ~/.config/fish/completions फ़ोल्डर के अंदर डाल दिया है।

संदर्भ: मछली डॉक्स


गीशहब पर zanchey की टिप्पणी से अनुकूलित:

यदि आपके पास प्रोग्राम myprog जो --_completion विकल्प को लेता है, तो आप myprog लिए एक पूर्णता स्टब लिख सकते हैं जो इस तरह दिखता है:

complete --command myprog --arguments '(myprog --_completion (commandline -cp)'

तब आपका कार्यक्रम myprog --_completion myprog some arguments here रूप में myprog --_completion myprog some arguments here , और आप उपयुक्त पूर्णता के साथ जवाब दे सकते हैं। इसे केवल वर्तमान टोकन को पूरा करना चाहिए जो पूरा हो रहा है (आप इसे (commandline -ct) साथ प्रोग्राम में भी पास कर सकते हैं, या खुद को निशाना बना सकते हैं), वैकल्पिक रूप से एक टैब और एक संक्षिप्त वर्णन द्वारा अनुसरण कर सकते हैं। कई पूर्णताएं नई लाइनों से अलग होती हैं

टिप्पणियाँ:

  • --_completion अजगर-आत्म- --_completion पुस्तकालय द्वारा सुझाए गए एक सम्मेलन है, लेकिन आप जो कुछ भी चाहते हैं उसका उपयोग कर सकते हैं, और यह उत्तर पायथन-विशिष्ट नहीं है
  • Dbarnett / python-selfcompletion # 2 (GitHub टिप्पणी) में वर्णित डिफ़ॉल्ट समापन को निर्दिष्ट करने का कोई तरीका नहीं है। आपको निश्चित रूप से प्रत्येक आदेश के लिए एक छोटी सी पट्टी बनाना होगा।

विशेषकर पाइथन लिपियों के लिए, निम्नलिखित पुस्तकालय भविष्य में किसी बिंदु पर मछली पूर्णता का समर्थन कर सकते हैं (लेकिन वे अभी तक नहीं हैं):





fish