কমান্ডের প্রথম অক্ষরগুলি সম্পূর্ণ হওয়ার পরে প্রদর্শনে পুনরাবৃত্তি হয়


21

আমি সম্পূর্ণ করার Tabজন্য ব্যবহার করার সময় প্রথম দুটি অক্ষর পুনরাবৃত্তি হয়েছিল । নীচের স্ক্রিনশটে, cdপুনরাবৃত্তি হয়।

এখানে চিত্র বর্ণনা লিখুন

আমি rxvt-unicdoe, xterm, টার্মিনেটর চেষ্টা করেছি। এই সমস্ত টার্মিনাল এমুলেটরগুলির এই সমস্যা রয়েছে।

Zsh সংস্করণ 5.0.2, কনফিগার ফাইল অন-মাই- zsh file


Zsh সঞ্চালিত কমান্ডে অক্ষরগুলি পুনরাবৃত্তি করা হয়েছে, বা সেগুলি কেবল প্রদর্শিত হয়েছে? কমান্ডটি দুটি অক্ষরের চেয়ে দীর্ঘ হলে অক্ষরের সংখ্যা কি পরিবর্তন হয়? বর্তমান ডিরেক্টরি পরিবর্তন হলে নম্বর কি পরিবর্তন হবে?
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

@ গিলিস পুনরাবৃত্ত চরটি কমান্ডটিতে বিদ্যমান নেই। আমি কমান্ড কার্যকর করতে পারি।
জিলেন

উত্তর:


32

যদি আপনার কমান্ড লাইনের অক্ষরগুলি কখনও কখনও অফসেটে প্রদর্শিত হয়, এটি প্রায়শই কারণ 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) এটি ঠিক করবে।


আমার ধারণা আমি সম্ভবত সম্পর্কিত হরফটি মিস করছি, আমি লক্ষ্য করেছি যে প্রথম চরটি অদ্ভুত। ->আমার মনে হয় এটি প্রত্যাশিত
jilen

@ জিলেন আহ, এটি অন্য একটি সমস্যা হতে পারে যা আমি উল্লেখ করতে ভুলে গেছি: সম্ভবত আপনার প্রম্পটে আপনার টার্মিনাল থেকে আলাদা একটি এনকোডিং-এ নন-এসসিআইআই অক্ষর রয়েছে, যার মধ্যে একটি বা উভয় এনকোডিং মাল্টিবাইট রয়েছে। যদি আপনি এটির জন্য সহায়তা চান, localeএবং এর আউটপুট পোস্ট করুন echo $PS1 | od -t x1(এবং এটি ব্যবহার করে অন্য কোনও ভেরিয়েবলের সাথে একই জিনিস $PS1)।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

2
আমি লোকেলটি সেট করতে ভুলে গিয়েছি (আমি আর্চলিনাক্স ব্যবহার করছি, লোকালটি ডিফল্টরূপে সেট না করে রেখে দেওয়া হয়েছে)। লোকাল সেট করার পরে, এই সমস্যাটি ঠিক হয়ে গেছে। অনেক অনেক ধন্যবাদ, ছেলে !!!!
জিলেন

আমি এটিকে উন্নীত করেছি কারণ, ভাল, এটি দুর্দান্ত। তবে যদি আপনি অন্যথায় নিজের থেকে কার্সার গণনাটি পরিচালনা করেন তবে পলায়নকারীদের ব্র্যাকেটগুলিতে একেবারে অন্তর্ভুক্ত করার দরকার নেই। সাবসেলড ফাংশনটি কল করা অতীতে আমার পক্ষে কাজ করেছে - বা স্ট্রাউডকে জড়িত না করে এখনও / dev / tty এ অবতরণকারী পুনর্নির্দেশগুলি কাজ করতে পারে। অন্যান্য পদ্ধতিগুলি যে কাজ করেছে - \e{7,8}কার্সার রাজ্যগুলি সংরক্ষণ / পুনরুদ্ধার করতে ব্যবহার করে।
মাইক্রজারভ

এটিই ছিল LC_CTYPEআমার জন্য এটি স্থির করে। আমি এটি সেট Cকরেছিলাম, যখন আমি এটি আনসেট করি, সমস্ত কাজ করে। ধন্যবাদ।
জামালনি

14

আমিও একই সমস্যা পেয়েছি এবং আমার সমাধানটি এখানে পেয়েছি: https://github.com/robbyrussell/oh-my-zsh/issues/5157#issuecomment-226031519 । কেবল আপনার মধ্যে নিম্নলিখিত লিখুন ~/.zshrc

export LC_CTYPE=en_US.UTF-8


1
আপনার ইঙ্গিত জন্য ধন্যবাদ! আমি যাইহোক, localeআমি ব্যবহার করছি সমস্ত রিসেট করতে হয়েছিল, কিন্তু এটি আমার জন্য কাজ করে। এই উত্তরটি উবুন্টুর জন্য প্রয়োজনীয় পদক্ষেপ সরবরাহ করে।
সর্বোচ্চ

তোমাকে অনেক ধন্যবাদ! আমাকে প্রচুর আগ্রাসন থেকে বাঁচিয়েছে
মোশে

1

আইটিআরএম 2 এ ম্যাকোজে আমার এই সমস্যাটি ছিল। আমি অগ্রাধিকার -> প্রোফাইল -> পাঠ্যে গিয়ে "ইউনিকোড সংস্করণ 9 প্রস্থ ব্যবহার করুন" টিক দিয়ে এটিকে সমাধান করেছি।


বাহ, এটি আসলে কাজ করে। ধন্যবাদ!
পল ক্যালাব্রো

1

আমি উবুন্টু এলটিএস ডকার ইমেজ ( ubuntu:latest) ব্যবহার করে এই সমস্যাটি পেয়েছি । এটি সম্পর্কিত পৃষ্ঠায় প্রদত্ত নির্দেশাবলী দিয়ে আমি এটি ঠিক করেছি: https://hub.docker.com/_/ubuntu

apt-get update && \
apt-get install -y locales && \
rm -rf /var/lib/apt/lists/* && \
localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
echo 'export LANG=en_US.utf8' >> ~/.zshrc
zsh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.