আমি কীভাবে কমান্ডগুলি zsh এ সাহসী প্রদর্শিত করতে পারি?


18

আমি আমার বাশ শেলটি সেট আপ করেছি যাতে আমার টাইপ করা যে কোনও কমান্ডগুলি গা in় আকারে উপস্থিত হয় এবং কমান্ডের আউটপুট স্বাভাবিক ওজনে প্রদর্শিত হয়:

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

আমি সাহসী চালু করতে \e[01mআমার PS1পরিবর্তনশীলটির শেষে যুক্ত করে trap DEBUGএবং এটি বন্ধ করে দিয়ে এটি করেছি:

trap 'printf "\e[0m" "$_"' DEBUG

এই ভাবে, \e[0m প্রতিটি কমান্ড কার্যকর হওয়ার আগে মুদ্রণ করা হবে এবং আমি আউটপুটে স্বাভাবিক ফন্টের ওজন পাই।

আমি কীভাবে একই প্রভাব পেতে চলেছি zsh?

উত্তর:


13

পুরানো ধাঁচের উপায়টি ব্যবহার করা ছিল POSTEDIT

 POSTEDIT=$'\e[0m'

(এবং যেভাবে এটি বাশ নয়, অনুকরণের জন্য কোনও ডিইবিইউজি ট্র্যাপ ব্যবহার করবেন না preexec: zsh সেখান থেকে এসেছে ) তবে zsh 4.3.11 থেকে আপনি কমান্ড লাইন সিনট্যাক্স হাইলাইটিং সুবিধা ব্যবহার করতে পারেন । আপনার প্রম্পট এবং সেট সম্পর্কে আপনার প্রম্পট কেয়ার করুন Let

zle_highlight=(default:bold)

7

আপনি যা চান তা হল প্রিক্সেক হুক ফাংশন :

preexec() { printf "\e[0m"; }

তারপরে প্রতিটি কমান্ড কার্যকর হওয়ার আগে, preexec আপনার ফন্টটি স্বাভাবিকে পুনরায় সেট করতে চালানো হবে।

সুতরাং, আপনি আপনার প্রশ্নে যে একই প্রম্পট দেখিয়েছেন তা পেতে, এই লাইনগুলিকে আপনার যুক্ত করুন ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }

এটি একটি DEBUG ফাঁদের পরিবর্তে ব্যবহার করার সঠিক জিনিস তবে কমান্ড লাইনটি সাহসী করার উপযুক্ত উপায়ও নয়।
গিলস 'অশুভ হওয়া বন্ধ করুন'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.