যদি আপনার কমান্ড লাইনের অক্ষরগুলি কখনও কখনও অফসেটে প্রদর্শিত হয়, এটি প্রায়শই কারণ zsh প্রম্পটের জন্য ভুল প্রস্থটি গণনা করেছে। লক্ষণগুলি হ'ল আপনি চরিত্রের সাহায্যে অক্ষর বা চলমান চরিত্রের যতক্ষণ অক্ষর প্রদর্শন করেন ঠিক ততক্ষণ ঠিকঠাক দেখায় তবে কিছুটা অক্ষর দেখা যায় (যখন কিছু অক্ষর তাদের উচিতের চেয়ে আরও সঠিকভাবে প্রদর্শিত হয়) যখন আপনি কার্সারটি সরানো ( Home, সমাপ্তি ইত্যাদি ) ব্যবহার করেন completion ) বা কমান্ডটি যখন দ্বিতীয় লাইনে ওভারল্যাপ হয়।
কমান্ডের অক্ষরগুলি কোথায় স্থাপন করা হয়েছে তা জানতে Zsh কে প্রম্পটের প্রস্থ জানতে হবে। এটি ধরে নেওয়া হয় যে অন্য চরিত্রটি অন্য একটি অবস্থান অবহিত না করে একটি পদ দখল করে।
একটি সম্ভাবনা হ'ল আপনার প্রম্পটে অ্যাডকেপ সিকোয়েন্স রয়েছে যা সঠিকভাবে সীমানাঙ্কিত নয়। এস্কেপ সিকোয়েন্সগুলি যা পাঠ্যের রঙ বা অন্যান্য ফর্ম্যাটিং দিকগুলি পরিবর্তন করে বা উইন্ডো শিরোনাম বা অন্যান্য প্রভাবগুলি পরিবর্তন করে, এর শূন্য প্রস্থ রয়েছে। তাদের শতাংশ-ধনুর্বন্ধনী কনস্ট্রাক্টের মধ্যে অন্তর্ভুক্ত করা দরকার%{…%}
। আরও সাধারণভাবে, একটি এস্কেপ সিকোয়েন্স %42{…%}
zsh কে ধরে নিতে বলে যে ধনুর্বন্ধনীগুলির ভিতরে যা রয়েছে তা 42 টি অক্ষর প্রশস্ত।
সুতরাং আপনার প্রম্পট সেটিংস ( PS1
, PROMPT
বা যে ভেরিয়েবলগুলি তারা উল্লেখ করেছেন) পরীক্ষা করে দেখুন এবং নিশ্চিত করুন যে সমস্ত পালানোর ক্রম (যেমন \e[…m
পাঠ্যের বৈশিষ্ট্যগুলি পরিবর্তন করতে হবে - নোট করুন যে এটি কিছু ভেরিয়েবলের মাধ্যমে উপস্থিত থাকতে পারে $fg[red]
) ভিতরে রয়েছে %{…%}
। যেহেতু আপনি ওহ-মাই-জেডএস ব্যবহার করছেন, তাই আপনার নিজের সেটিংস এবং যে সংজ্ঞাগুলি আপনি ওহ-মাই-জেডএস থেকে ব্যবহার করছেন তা উভয়ই পরীক্ষা করে দেখুন।
বাশ একই প্রশ্ন উত্থাপন। প্রম্পটে শূন্য-প্রস্থের সিকোয়েন্সগুলি আবদ্ধ করা দরকার \[…\]
।
আরেকটি সম্ভাবনা হ'ল আপনার প্রম্পটে অ-এসকিআইআই অক্ষর রয়েছে এবং সেগুলি zsh (বা অন্য কোনও অ্যাপ্লিকেশন) রয়েছে এবং আপনার টার্মিনালটি সেগুলির প্রশস্ততা সম্পর্কে আলাদা ধারণা রয়েছে। এটি ঘটতে পারে যদি আপনার টার্মিনালের এনকোডিং এবং শেলটিতে ঘোষিত এনকোডিংয়ের মধ্যে কোনও মিল নেই এবং দুটি এনকোডিংগুলি নির্দিষ্ট বাইট সিকোয়েন্সগুলির জন্য বিভিন্ন প্রস্থের ফলাফল করে। সাধারণত ইউনিকোড নন-টার্মিনাল ব্যবহার করার সময়, তবে ইউনিকোডের স্থানীয় বা তার বিপরীতে ঘোষণার সময় আপনি এই সমস্যাটি সমাধান করতে পারেন।
অ্যাপ্লিকেশনগুলি লোকেলটি জানতে পরিবেশের ভেরিয়েবলের উপর নির্ভর করে; প্রাসঙ্গিক সেটিং LC_CTYPE
, যা বিভিন্ন পরিবেশের থেকে নির্ধারণ করা হয় LANGUAGE
, LC_ALL
, LC_CTYPE
এবং LANG
(এই প্রথম যে সেট প্রযোজ্য)। কমান্ডটি locale | grep LC_CTYPE
আপনাকে আপনার বর্তমান সেটিংটি জানায়। সাধারণত স্থানীয় সমস্যাগুলি এড়ানোর সর্বোত্তম উপায় হ'ল টার্মিনাল এমুলেটরটি সেট করা দেওয়া LC_CTYPE
, যেহেতু এটি এনকোডিংটি কী প্রত্যাশা করে তা জানে; তবে যদি এটি আপনার পক্ষে কাজ করে না তবে সেট করে দেওয়ার বিষয়টি নিশ্চিত করুন LC_CTYPE
।
পূর্ববর্তী কমান্ডটি এমন কিছু আউটপুট প্রদর্শন করেছিল যা একটি নতুন লাইনে শেষ হয় না, একই লক্ষণগুলি দেখা দিতে পারে যাতে প্রম্পটটি লাইনের মাঝখানে প্রদর্শিত হয় তবে শেলটি তা বুঝতে পারে না। এক্ষেত্রে কেবল এমন কমান্ড চালানোর পরে ঘটবে, অবিচ্ছিন্নভাবে নয়।
যদি কোনও লাইন সঠিকভাবে প্রদর্শিত না হয়, কমান্ড redisplay
বা clear-screen
( ডিফল্টরূপে Ctrl+ আবদ্ধ L) এটি ঠিক করবে।