উত্তর:
আমি https://github.com/mgalgs/fuzzy_bash_completion সম্পর্কে জানি যা শেল ফাংশনগুলির সাথে ব্যবহৃত হয় complete।
আমি মনে করি আমরা সম্ভবত কিছুটা আরও ভাল করতে পারলাম, আরও সংক্ষিপ্ত হতে হবে। আপনার .bashrc বা। প্রোফাইলে খোলার সময় ...
আমরা যে বেসিক হুকটি ব্যবহার করি তা হ'ল:
complete -o nospace -o filenames -F fuzzypath cd ls cat
-এফ বিকল্পের অর্থ ট্যাব-সমাপ্তির জন্য শেল ফাংশন ব্যবহার করুন, যেখানে বিকল্পগুলি COMPREPLYভেরিয়েবলের মধ্যে সেট করা থাকে । উদাহরণস্বরূপ:
ফাংশন ফুজিপথ () {
যদি [-z $ 2]
তারপর
সম্পূর্ণ = (`ls`)
আর
DIRPATH = `প্রতিধ্বনি" $ 2 "| gsed 's | [^ /] * $ ||' `
BASENAME = `প্রতিধ্বনি" $ 2 "| gsed 's |। * / ||' `
ফিল্টার = `প্রতিধ্বনি" $ বেস "| gsed 's |। | `0. * | g'`
COMPREPLY = (`ls $ DIRPATH | grep -i" $ ফিল্টার "| gsed" s | ^ | IR DIRPATH | g "`)
ফাই
}
DIRPATHআপনি যে টাইপ করছেন তা সর্বশেষে / আপনার পথে আগে যেখানে রয়েছে এবং BASENAMEবর্তমানে আপনার কার্সারটি এখানে রয়েছে।
FILTERঅস্পষ্ট-নেসটিই এখানে আসে। মূলত, আমাদের ফাজ রেজেক্স তৈরি করতে প্রতিটি চর নিয়ে BASENAMEএকটি সন্নিবেশ করান .*।
বাকিগুলি কেবলমাত্র ls এর সাথে রেজেক্সের সাথে সংমিশ্রণ করছে COMPREPLY। আপনি এখানে আরও করণীয় জিনিস পেতে পারেন, সম্ভবত এটির সাথে find।
আমি http://fahdshariff.blogspot.com/2011/04/writing-your-own-bash-completion.htmlও দরকারী বলে খুঁজে পেয়েছি ।
আপনি fzf দরকারী খুঁজে পেতে পারেন । এটি রুবিতে রচিত একটি সাধারণ উদ্দেশ্যমূলক अस्पष्ट ফাইন্ডার যা কোনও জিনিসের তালিকার সাথে ব্যবহার করা যেতে পারে: ফাইল, প্রক্রিয়া, কমান্ডের ইতিহাস, গিট শাখা ইত্যাদি etc.
এটির ইনস্টল স্ক্রিপ্টটি CTRL-Tআপনার শেলের জন্য কী-বাইন্ডিং সেটআপ করবে । নিম্নলিখিত জিআইএফ এটি কীভাবে কাজ করে তা দেখায়।

fzf.. (SC tput) এবং পরে এটিকে পুনরুদ্ধার tput rc..
আপনার অন্যান্য উত্তরের সাথে যেতে, আপনি zsh দেখতে চাইতে পারেন। এটি ব্যাশের সাথে পিছনের দিকে সামঞ্জস্যপূর্ণ যাতে আপনি এটি প্রতিস্থাপনের একটি ড্রপ হিসাবে ব্যবহার করতে পারেন তবে এটি উল্লেখযোগ্যভাবে প্রসারিত বৈশিষ্ট্যগুলিকে সমর্থন করে এবং এর মধ্যে একটি প্রাসঙ্গিক সচেতন ট্যাব সমাপ্তিকে ব্যাপকভাবে উন্নত করে।
zsh কমপ্লিটেশন এফএকিউ ব্যবহারের ক্ষেত্রে প্রসারিত হয়, তবে আমি বিশ্বাস করি যে আপনার উদাহরণ অনুসারে আপনি COMPLETE_IN_WORDফাংশনে সবচেয়ে আগ্রহী হবেন । এটি বেশ পছন্দসই আচরণ নয়, তবে এটি কাছাকাছি। মূল কথাটি হ'ল ব্যাশ ব্যবহারের চেয়ে আরও বেশি সহজলভ্য উপায়ে বেস কার্যকারিতাটি বাড়ানোর অনেক উপায় রয়েছে।
এখানে একটি ঝাপসা ম্যাচ এক্সটেনশান যা আপনি আরও বিশেষভাবে যা চান তার আনুমানিক হবে; zsh-fuzzy ম্যাচ
কিছু ধারণার জন্য আপনি জনপ্রিয় ওহ-মাই-জেডএস ফ্রেমওয়ার্কটি একবার দেখে নিতে পারেন যার মধ্যে zsh পরিচালনা এবং এটি প্রসারিত করার জন্য বেশ কয়েকটি ফাংশন রয়েছে। এটি আপনি চান তার চেয়ে বেশি, সম্ভবত, তবে প্লাগইনগুলির নীচে আপনি বিভিন্ন ভূমিকার জন্য স্বতঃপূরণ স্ক্রিপ্টগুলি নোট করবেন। ক্ষমতা সম্পর্কে ধারণা পেতে।
cat Th+ +tab?