स्ट्रिंग को पूर्ण करने के लिए स्ट्रिंग आउटपुट कैसे करें?


15

कुछ gitआदेशों में कई विकल्प होते हैं, और यह अक्सर उनके लिए खोज करने के लिए उपयोगी होगा जिनकी मुझे आवश्यकता है - मैं सिर्फ उस विकल्प की तलाश कर रहा था जो TABचौड़ाई को नियंत्रित करता है git-gui, लेकिन इसके लिए लगभग 200 पूर्णताएं हैं git config। एक स्पष्ट समाधान एक संपादक में सभी पूर्णताओं को कॉपी करना और उनके माध्यम से खोज करना है, लेकिन मैं ऐसा नहीं करूंगा

[something] | grep tab

इसके लिए कोई पृष्ठ manया infoपृष्ठ नहीं हैं compgen, help compgenअपने स्वयं के विकल्पों की व्याख्या भी नहीं करता है, और compgen(कैसे विडंबना के लिए) कोई स्वत: पूर्ण नहीं है ।

पुनश्च: compgen -Aकाम नहीं करता है।

PPS: यह कोई प्रश्न नहीं है git-gui- टैब चौड़ाई के प्रश्न का हल कहीं और था।

PPPS: यह ऑटो-कम्प्लीट कमांड्स के बारे में नहीं है , केवल कमांड पैरामीटर्स हैं


यह "टैब पूर्ण" के आउटपुट को पाइप करने के लिए बहुत समान है ? , लेकिन स्वीकार किए जाते हैं जवाब विशेष रूप से पूरा करने के आदेश, नहीं तर्क के लिए था
माइकल Mrozek

जवाबों:


10

आप निम्नलिखित फ़ंक्शन का उपयोग कर सकते हैं, जो उसी तरह का उपयोग करते हैं जो sudoस्वत: पूर्णता पूर्ण सूची उत्पन्न करते हैं:

comp() {
    local COMP_LINE="$*"
    local COMP_WORDS=("$@")
    local COMP_CWORD=${#COMP_WORDS[@]}
    ((COMP_CWORD--))
    local COMP_POINT=${#COMP_LINE}
    local COMP_WORDBREAKS='"'"'><=;|&(:"
    # Don't really thing any real autocompletion script will rely on
    # the following 2 vars, but on principle they could ~~~  LOL.
    local COMP_TYPE=9
    local COMP_KEY=9
    _command_offset 0
    echo ${COMPREPLY[@]}
}
comp git config ''

जहां _command_offsetबाश-समापन (पैकेज) में परिभाषित किया गया है।

नोट: फ़ंक्शन को एक इंटरेक्टिव शेल में चलाने की आवश्यकता है (अर्थात यदि यह किसी फ़ाइल में है, तो फ़ाइल को केवल चलाने के लिए आवश्यक होना चाहिए।) या आवश्यक पूरा होने वाले नियमों / कार्यों को परिभाषित नहीं किया जाएगा।

पुनश्च। compgen -Aकेवल अंतर्निहित कार्यों के लिए काम करता है, जो आपको कोशिश करनी चाहिए थी (लेकिन काम नहीं करता है) compgen -Fया (या वास्तव में compgen -o bashdefault -o default -o nospace -F _git) है। इसका कारण यह काम नहीं करता है (और कॉम्पोज़ / कम्प्लेंट सहित बिल-इन कमांड के लिए डॉक्टर) को bash (1) में पाया जा सकता है ।


@ l0b0 उम्मीद है कि सभी मामलों में काम करेगा।
yuyichao

बहुत बढ़िया, यह काम करता है! मैंने कुछ छोटे- मोटे काम किए और अब अच्छे के लिए मेरी .bash_aliases में है। आप शायद केवल इतना ही चाहते हैं कि समाधान निकल जाए, लेकिन इसमें कोई संदेह नहीं है कि आपको इनाम मिलेगा। मैं अपनी चर्चा टिप्पणियों को हटा दूंगा क्योंकि वे अब प्रासंगिक नहीं हैं।
l0b0

1
मैंने पाया है कि इंटरैक्टिव शेल में इसका उपयोग करने से पहले से ही टैब-पूर्णता नष्ट हो सकती है। फ़ंक्शन में प्रत्येक चर को स्थानीय बनाना उस समस्या को हल करता है। (उदा local COMP_LINE="$*")
एएल फलागन

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