পাইপ প্রতীক হওয়ার আগে স্থানটি খাওয়া থেকে জেডএসকে কীভাবে থামান?


18

আমি যখন '|'zsh কমান্ড লাইনে পাইপ চিহ্নের পরে কোনও স্থান টাইপ করি তখন zsh স্পেস খায়, পাইপ চিহ্নটি সরাসরি পূর্বের শব্দের বিপরীতে রেখে দেয়। কীভাবে আমি এটি করতে বাধা দেব? আমি কোনও সম্ভাব্য স্টাইলিস্টিক কনভেনশন সম্পর্কে নিশ্চিত নই, তবে আমি পঠনযোগ্যতার জন্য পাইপ প্রতীকের উভয় পাশে একটি স্থান পছন্দ করি। আমি বক্সের বাইরে ওহ-মাই-জেডএস ব্যবহার করছি।

সমাধান

নীচে এমপির উত্তরের ভিত্তিতে, আমি নিম্নলিখিত সমাধানটি ব্যবহার করেছি:

ডিফল্টরূপে, ZLE_REMOVE_SUFFIX_CHARS zsh / ohmyzsh এ অপরিজ্ঞাত। অপরিবর্তিত হওয়ার পরে, এটি যেমনটি ছিল তেমন কাজ করে:

ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|'

আমি আমার। / .Zshrc এ নিম্নলিখিত সংজ্ঞাটি যুক্ত করেছি:

ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&'

(পাইপ ব্যতীত সমস্ত) এবং প্রেস্টো, নিখুঁত! সমস্যা চলে গেছে


1
প্রথমে এটি ব্যবহার করে পুনরায় চেষ্টা করুন zsh -f(আপনার কনফিগারেশনটি লোড করা এড়াতে)। আপনি লক্ষ্য করবেন যে zsh আর এটি করবে না। তারপরে, এটি কীভাবে ঘটছে তা নির্ধারণ করার জন্য আপনাকে ওহ-মাই-জেডএস-এ (সম্ভবত সম্ভবত) খনন করতে হবে ;-)
ফ্রান্সিসকো

উত্তর:


18

আমি মনে করি আপনি বোঝাতে চাইছেন যে আপনি TABকোনও কমান্ড / ফাইলের নামটি পূরণ করার পরে একটি স্থান স্বয়ংক্রিয়ভাবে যুক্ত হবে তবে |এটি টিপানোর পরে আবার অদৃশ্য হয়ে যায়। অন্যথায় আমি সেই প্রভাবটি পুনরুত্পাদন করতে পারি না।

যাইহোক, সেক্ষেত্রে সমাধানটি হিসাবে সহজ হওয়া উচিত

ZLE_REMOVE_SUFFIX_CHARS=""

ব্যাখ্যাটি একটি লিটল বিট কৌতুকময়, তাই আমি কেবল উদ্ধৃত করি man zshparam

ZLE_REMOVE_SUFFIX_CHARS/ ZLE_SPACE_SUFFIX_CHARS এই পরামিতিগুলি লাইন সম্পাদক দ্বারা ব্যবহৃত হয়। নির্দিষ্ট পরিস্থিতিতে সম্পূর্ণকরণ সিস্টেমের সাথে যুক্ত প্রত্যয় (সাধারণত স্থান বা স্ল্যাশ) স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে, কারণ পরবর্তী সম্পাদনা কমান্ড সন্নিবেশযোগ্য অক্ষর ছিল না, বা চরিত্রটি প্রত্যয়টি মুছে ফেলার জন্য প্রয়োজনীয় হিসাবে চিহ্নিত করা হয়েছিল।

এই ভেরিয়েবলগুলিতে অক্ষরের সেট থাকতে পারে যা প্রত্যয়টি সরিয়ে ফেলবে। যদি ZLE_REMOVE_SUFFIX_CHARS সেট করা থাকে তবে এই অক্ষরগুলির ফলে প্রত্যয়টি মুছে ফেলা হবে; যদি ZLE_SPACE_SUFFIX_CHARSসেট করা থাকে, এই অক্ষরগুলির ফলে প্রত্যয়টি একটি স্থান দ্বারা সরানো এবং প্রতিস্থাপনের কারণ হবে।

যদি ZLE_REMOVE_SUFFIX_CHARSসেট না করা থাকে তবে ডিফল্ট আচরণটি সমান:

ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|'

যদি ZLE_REMOVE_SUFFIX_CHARSসেট করা থাকে তবে খালি থাকে, কোনও চরিত্রের এই আচরণ নেই। ZLE_SPACE_SUFFIX_CHARS অগ্রাধিকার নেয়, যাতে নিম্নলিখিত:

ZLE_SPACE_SUFFIX_CHARS=$'&|'

অক্ষর &এবং |প্রত্যয় মুছে ফেলার কারণ কিন্তু এটি একটি স্থান দিয়ে প্রতিস্থাপন করে।

পার্থক্যটি চিত্রিত করার জন্য, ধরুন যে বিকল্পটি AUTO_REMOVE_SLASHকার্যকর হয়েছে এবং ডিরেক্টরিটি ডিআইআর সবেমাত্র একটি সংযোজন সহ সম্পন্ন হয়েছে /, যার ফলে ব্যবহারকারী টাইপ করে &। ডিফল্ট ফলাফল DIR&। সঙ্গে ZLE_REMOVE_SUFFIX_CHARSসেট কিন্তু অন্তর্ভুক্ত না করেই &ফল DIR/&। সঙ্গে ZLE_SPACE_SUFFIX_CHARSঅন্তর্ভুক্ত করা সেট &ফল DIR &

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


হ্যাঁ, আপনি এটি উল্লেখ না করা পর্যন্ত আমি এটি লক্ষ্য করি নি, তবে এটি কেবলমাত্র একটি ট্যাব-সমাপ্তির পরে ঘটেছিল, উত্তরের জন্য ধন্যবাদ, এটি আমার যা প্রয়োজন তা আমাকে দেয় :)
স্ক্যাননি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.