Zsh অটো সম্পূর্ণরূপে সম্পূর্ণ কার্যকারিতা প্রস্তাব দেয় (_ গিট _ভিম ইত্যাদি)


9

zshআমার কমান্ডগুলির জন্য কীভাবে সম্পূর্ণ পরামর্শ দিচ্ছে তা নিয়ে আমার একটি ক্ষুদ্র বিরক্তি রয়েছে ।

যদি আমি কোনও কমান্ডের প্রারম্ভটি টাইপ করি যা আমি ইনস্টল না করেছি এবং টিপুন তবে tabএটি ইনস্টল হওয়া সমাপ্তির ফাংশনটির পরামর্শ দেবে।

বলি আমি কার্যকর করতে চাই vimতবে এটি ইনস্টল করা হয়নি এটি প্রস্তাব দেয় _vim।

এই বন্ধ করতে একটি উপায় আছে কি? বা আমার সেটআপে আমি কিছু ভুল করেছি?

আমার সমস্ত ডটফাইলগুলি সর্বজনীন github.com/henrikbjorn/castle।


আমি এই আচরণটি আগে দেখেছি, তবে আমার বর্তমান সেটআপে এটি উপস্থিত বলে মনে হয় না। দুঃখের বিষয়, আমার কোনও ক্লু নেই, আমার কোন সেটিংসের আচরণটি বদলেছে।
— কাস্টমাইজার

উত্তর:


8

ডিফল্টরূপে, zsh এর সমাপ্তি ইঞ্জিন কেবল আপনার টাইপ করা কিছুতে যুক্ত করার চেষ্টা করে। আপনি এটিকে একটি উপসর্গ যোগ করার চেষ্টা করার জন্য কনফিগার করেছেন। সাধারণ ইন্টারেক্টিভ সমাপ্তি কনফিগারেশন ইঞ্জিন ( compinstall) এটিকে "ম্যাচিং কন্ট্রোল → স্ট্রিং সমাপ্তি" এর অধীনে উপলব্ধ করে। এটি আপনার মধ্যে এর মতো একটি লাইন সন্নিবেশ করায় .zshrc:

zstyle ':completion:*' matcher-list '' 'l:|=* r:|=*'

zstyleBuiltin সেট (বেশিরভাগই) সমাপ্তির সেটিংস। matcher-listসমাপ্তির শৈলী উপায়ে পারম্পর্য মধ্যে চেষ্টা একটি তালিকা বাঁধন যখন সেখানে অন্তত একটি ম্যাচ। খালি স্ট্রিংয়ের অর্থ ডিফল্ট সমাপ্তি (কেবল প্রত্যয়)। ম্যাচিং নিয়ন্ত্রণ জাদুমন্ত্রোচ্চারণ l:|=* r:|=*উপায়ে একটি উপসর্গ ম্যাচিং চেষ্টা *এবং একটি প্রত্যয় ম্যাচিং *, IE কোনো উপসর্গ ও প্রত্যয়।

আপনি _সম্পূর্ণরূপে শুরু হওয়া উপসর্গগুলি নিষেধ করতে পারেন । এটি এখনও শব্দের _সমাপ্তি এবং একটি উপসর্গ যোগ করে সম্পূর্ণ করার অনুমতি দেয় তবে উপসর্গটি শুরু নাও হতে পারে _।

zstyle ':completion:*' matcher-list '' 'l:|=[^_]* r:|=*'

এটি সমস্ত কমপ্লিমেন্টের ক্ষেত্রেই প্রযোজ্য, কেবলমাত্র কমান্ডের নামের সম্পূর্ণ নয়। কমান্ডের নামগুলিতে এটি কীভাবে সীমাবদ্ধ রাখতে হয় তা আমি জানি না।

শুরু হওয়া কমান্ডের নামগুলি আরও স্পষ্টভাবে বাদ দেওয়ার উপায় থাকতে হবে _তবে কীভাবে তা আমি জানি না। প্রথম ignored-patternsশুরুটি সমাপ্তির শৈলীর সাথে।

zstyle ':completion:*:*:-command-:*:*' ignored-patterns '_*'       

এটি শুরু হওয়া ম্যাচগুলি বাদ দেয় _; তবে, যদি কোনও মিল না থাকে, তবে zsh আবার এড়িয়ে যাওয়ার নিয়মগুলি না করে চেষ্টা করে। এর মধ্যে ভাল এটি হ'ল কমান্ডটি যদি প্রথম স্থানে আন্ডারস্কোর দিয়ে শুরু হয় তবে এটি দ্বিতীয় পাসে সম্পূর্ণ হবে। খারাপ অংশ zsh এইভাবে যদি সেখানে কোনো মিল নেই একটি আন্ডারস্কোর যাহাই হউক না কেন যোগ করার চেষ্টা করবে, তাই যদি আপনি viএবং viewকিন্তু vimতারপর টিপে Tabপরে viইচ্ছা অফার viএবং viewকিন্তু _vim, কিন্তু যদি আপনি টাইপ vimতারপর সমাপ্তির অফার করবে _vim।


ধন্যবাদ আপনাকে নির্দিষ্ট করা সমাধানগুলির একটি করে কাজ করে বলে মনে হচ্ছে, এটি কীভাবে কাজ করে সে সম্পর্কেও আমি একগুচ্ছ শিখেছি।
— হেনরিক বিজার্নকভ

2
ignore-patternsকোনও মিল না থাকলেও সমাধানটি আমার পক্ষে ঠিক কাজ করে। কেবল এটি নিশ্চিত করতে হয়েছিল যে এতে completerনেই _ignored।
— আডাইফোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.