স্টাডআউটে স্ট্রিংয়ের পরিপূর্ণতা আউটপুট কিভাবে করবেন?


15

কিছু gitকমান্ডের অনেকগুলি বিকল্প রয়েছে এবং এটি প্রায়শই আমার প্রয়োজনের জন্য অনুসন্ধানের জন্য দরকারী হবে - আমি কেবলমাত্র বিকল্পটি সন্ধান করছিলাম যা TABপ্রস্থটি নিয়ন্ত্রণ করে git-gui, তবে প্রায় 200 টি পরিপূর্ণতা রয়েছে git config। একটি সুস্পষ্ট কর্মসূচী হ'ল সমস্ত পরিপূর্ণতা একটি সম্পাদকের মধ্যে অনুলিপি করা এবং সেগুলির মাধ্যমে অনুসন্ধান করা, তবে আমি বরং করব

[something] | grep tab

এর জন্য কোনও পৃষ্ঠা manবা infoপৃষ্ঠাগুলি নেই compgen, help compgenএমনকি তার নিজস্ব বিকল্পগুলিও ব্যাখ্যা করে না এবং এর জন্য কোনও স্বয়ংক্রিয় পূর্ণ নেই compgen(এটি কী বিদ্রূপের জন্য?)।

পিএস: compgen -Aকাজ করে না।

পিপিএস: এটি সম্পর্কে কোনও প্রশ্ন নয় git-gui- ট্যাব প্রস্থের প্রশ্নের সমাধান অন্য কোথাও ছিল।

পিপিপিএস: এটি স্বয়ংক্রিয়ভাবে সমাপ্ত কমান্ডগুলি সম্পর্কে নয় , কেবলমাত্র কমান্ড প্যারামিটারগুলি ।


এটি "ট্যাব সম্পূর্ণ" এর আউটপুটটি কীভাবে পাইপ করা যায় তার অনুরূপ ? , তবে সেখানে গৃহীত উত্তরটি কমান্ডগুলি সম্পূর্ণ করার জন্য ছিল, যুক্তি নয়
— মাইকেল মরোজেক

উত্তর:


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)। এটি কাজ না করার কারণ (এবং কমপেজ / সম্পূর্ণ সহ ব্যাশ অন্তর্নির্মিত কমান্ডগুলির জন্য ডক) বাশ (1) এ পাওয়া যাবে ।


@ l0b0 আশা করি সব ক্ষেত্রেই কাজ করে।
— yuyichao

দুর্দান্ত, এটি কাজ করে! আমি কয়েকটা ছোট ছোট টুইট করেছি এবং এখন এটি আমার .Bash_aliases এ ভাল। আপনি সম্ভবত ছাঁটাই করতে চাইতে পারেন কেবলমাত্র সমাধানটি বাকী রয়েছে তবে আপনি অনুগ্রহ পেয়ে যাবেন তাতে কোনও সন্দেহ নেই। আমি আমার আলোচনার মন্তব্যগুলি সরিয়ে দেব কারণ সেগুলি আর প্রাসঙ্গিক নয়।
— l0b0

1
আমি খুঁজে পেয়েছি যে ইন্টারেক্টিভ শেল এ এটি ব্যবহার করে ইতিমধ্যে জায়গায় থাকা ট্যাব-সমাপ্তি ধ্বংস করতে পারে। ফাংশনে প্রতিটি ভেরিয়েবল স্থানীয় করা সেই সমস্যার সমাধান করে। (উদাঃ local COMP_LINE="$*")
— AL ফ্লানাগান

পছন্দ করুন আপডেট করা হয়েছে।
— yuyichao
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.