আপনি কীভাবে প্রতিটি এন্টারে zsh আপডেটে RPROMPT করবেন?


11

আমার RPROMPTব্যবহার করে এসএনএন তথ্য প্রদর্শন করতে সেট করা হয়েছে vcs_info। এটা পড়ে RPROMPT=${vcs_info_msg_0_}। vcs_infoবলা হয় ব্যবহার precmd()। যাইহোক, আমি ডিরেক্টরি পরিবর্তন করার সময় আরপিআরএমপিটি আপডেট হয় না। এটি কেবল তখনই কাজ করে যদি আমি প্রম্পটটি আবার অনুরোধ করি (হয় উত্স। / .Zshrc বা প্রম্পট দ্বারা) এবং chdir- র পরিবর্তিত হয় না, যদি না আমি প্রম্পটটি আবার অনুরোধ করি। এই আচরণ পরিবর্তন করার কোনও উপায় আছে কি?

উত্তর:


20

মূল্যায়ন বিলম্ব করতে অ্যাসাইনমেন্ট এ ভেরিয়েবলের মানের চারপাশে একক উদ্ধৃতি রাখার চেষ্টা করুন:

RPROMPT='${vcs_info_msg_0_}'

স্থানান্তরিত হয়ে গেলে চেক চিহ্নটি কেন চলে যাবে?

@ ইউজার ৫৩ :৩: আপনার এটি মেটা.ইনিক্স.সটাকেক্সচেঞ্জ ডটকম অথবা মেটা.স্ট্যাকওভারফ্লো ডটকমের কাছে জিজ্ঞাসা করা উচিত। আমি উত্তরটি জানি না (বা কেবল অস্পষ্টভাবে জানি)।
— পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

3
এটি setopt PROMPT_SUBSTফাইলের আগে ঘটেছিল তা প্রয়োজন । অন্যথায়, এটি কেবল প্রম্পটটি আক্ষরিকভাবে প্রতিধ্বনিত করবে।
— নিক মেহারি

1

মূল্যায়ন বিলম্ব করতে একক-উদ্ধৃতি ব্যবহার করা গতিশীল উপকরণগুলিও সংজ্ঞায়িত করতে কাজ করে। এখানে tবিদ্যমান একটি এসএসএল এজেন্ট প্রসেসের সাথে একটি নতুন শেল সংযুক্ত করার জন্য ব্যবহৃত একটি এলিফ রয়েছে, যা ssh-startএকটি বাড়িতে নামির একটি ফাইলের সাথে শেল কোড লেখায় এমন একটি নাম দিয়ে শুরু করা হয়েছিল :

mymistress:~> which ssh-start
ssh-start: aliased to eval `ssh-agent | tee ~/.ssh/ssh-agent.out` ; ssh-add ~/.ssh/id_rsa
mymistress:~> grep "alias t" .zshrc    
alias t="eval `cat ~/.ssh/ssh-agent.out`"
mymistress:~> which t
t: aliased to eval SSH_AUTH_SOCK=/tmp/ssh-nZBZp29804/agent.29804; export SSH_AUTH_SOCK;\nSSH_AGENT_PID=29805; export SSH_AGENT_PID;\necho Agent pid 29805;`

এর সংজ্ঞাটি tখারাপ কারণ এটি তাজা রান থেকে নতুন তথ্য ssh-startউপেক্ষা করার কারণ। tআমার .zshrc এ এককভাবে উদ্ধৃত হওয়া উপন্যাসের সংজ্ঞা পরিবর্তন করা আরও ভাল আচরণ দেয়:

mymistress:~> grep "alias t" .zshrc
alias t='eval `cat ~/.ssh/ssh-agent.out`'
mymistress:~> source ~/.zshrc
mymistress:~> which t
t: aliased to eval `cat ~/.ssh/ssh-agent.out`

ডাবল কোট (কমান্ড বা পরিবেশের ভেরিয়েবলগুলির তাত্ক্ষণিকভাবে অভ্যন্তরীণ প্রসারণ) বনাম একক উদ্ধৃতি (কমান্ড এবং ভেরিয়েবলের বিলম্বিত মূল্যায়ন) এর প্রভাবগুলি প্রদর্শন tকরে প্রদত্ত সংজ্ঞাটির প্রসারণটি নোট করুন which t।

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