zstyleমনে হচ্ছে এটি ডেটা সংরক্ষণ এবং পুনরুদ্ধারের ঠিক কেন্দ্রের জায়গা, যেমন- exportশেল পরামিতিগুলির বিকল্প । এটা কি সত্য, নাকি এর থেকেও আরও কিছু আছে?
zstyleমনে হচ্ছে এটি ডেটা সংরক্ষণ এবং পুনরুদ্ধারের ঠিক কেন্দ্রের জায়গা, যেমন- exportশেল পরামিতিগুলির বিকল্প । এটা কি সত্য, নাকি এর থেকেও আরও কিছু আছে?
উত্তর:
zstyleসমাপ্তি সিস্টেমের জন্য সুস্পষ্ট শৈলী নিয়ন্ত্রণ পরিচালনা করে, তবে এটি কেবল এটির চেয়ে বেশি কভার করে বলে মনে হচ্ছে। উদাহরণস্বরূপ, vcs_infoমডিউলটি আপনার প্রম্পটে গিটের স্থিতি প্রদর্শনের জন্য এটির উপর নির্ভর করে। আপনি কয়েক ব্যাখ্যামূলক অনুচ্ছেদ দিকে তাকিয়ে শুরু করতে পারেন man zshmodulesমধ্যে zstyleঅধ্যায়।
কী সেটিংস কার্যকর হয় তা দেখতে আপনি কেবল এটির জন্য আবেদন করতে পারেন। এটি শিক্ষণীয় হতে পারে।
Zsh বইয়ের উপর একটা চমৎকার অধ্যায়ের চিকিত্সা হয়েছে zstyleএর বিভিন্ন ক্ষেত্র বিস্তারিতভাবে ব্যাখ্যা, কিছুটা।
.../Completion/এই ফাইলগুলির মধ্যে কিছু কীভাবে ব্যবহার করে তা দেখতে আপনি আপনার সিস্টেমে থাকা ডিরেক্টরিতে গ্রিপ করতে পারেন zstyle। একটি সাধারণ অবস্থান কাছাকাছি /usr/share/zsh/functions/Completion/*। আমি এটি আমার সিস্টেমে এটি 100+ ফাইলগুলিতে ব্যবহৃত দেখছি। ব্যবহারকারীরা প্রায়শই zstyleতাদের প্রায় ছিটিয়ে থাকে ~/.zshrc। আপনার সমাপ্তিতে কিছু রঙ এবং বিবরণ যুক্ত করার জন্য এখানে কিছু সুন্দর রয়েছে:
# Do menu-driven completion.
zstyle ':completion:*' menu select
# Color completion for some things.
# http://linuxshellaccount.blogspot.com/2008/12/color-completion-using-zsh-modules-on.html
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
# formatting and messages
# http://www.masterzen.fr/2009/04/19/in-love-with-zsh-part-one/
zstyle ':completion:*' verbose yes
zstyle ':completion:*:descriptions' format "$fg[yellow]%B--- %d%b"
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format "$fg[red]No matches for:$reset_color %d"
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
zstyle ':completion:*' group-name ''
# Completers for my own scripts
zstyle ':completion:*:*:sstrans*:*' file-patterns '*.(lst|clst)'
zstyle ':completion:*:*:ssnorm*:*' file-patterns '*.tsv'
# ...
আপনি যদি এটির সাথে অভিনয় করেন তবে সমাপ্তি সিস্টেমটি বেশিরভাগ ক্ষেত্রকে পরিষ্কার করে দেয়। টাইপ করার চেষ্টা করুন zstyle :«tab»এবং আপনি কিছু বিকল্প দেখতে পাচ্ছেন। পরবর্তী কোলনে ট্যাব-সম্পূর্ণ এবং আপনি পরবর্তী বিকল্পগুলির সেটগুলি ইত্যাদি দেখতে পাবেন etc.
কীভাবে zstyleকাজ করে তা সঠিকভাবে বুঝতে , আপনাকে প্রথমে বুঝতে হবে zsh একটি মডিউলার প্রোগ্রাম। থেকেman zshmodules
Zsh এর কিছু alচ্ছিক অংশগুলি মডিউলগুলিতে থাকে, শেলের মূল থেকে পৃথক। এই প্রতিটি মডিউল বিল্ড সময় শেলের সাথে সংযুক্ত থাকতে পারে, বা ইনস্টলেশনটি যদি এই বৈশিষ্ট্যটিকে সমর্থন করে তবে শেল চলাকালীন গতিশীলভাবে সংযুক্ত হতে পারে। [...]
এই ক্ষেত্রে zsh আরও পিএইচপি-র মতো অনুবাদকের মতো যেখানে মূল বিল্টিন কমান্ডগুলি "মূল" মডিউলটিতে সংজ্ঞায়িত করা হয়, তবে অন্যান্য বিল্টিন কমান্ডগুলি "মডিউল" এ অন্তর্ভুক্ত থাকে।
ঠিক আছে দুর্দান্ত, তাহলে "জাস্টাইল" কী?
zsh, অন্যান্য শেলের মতো বিল্টিন কমান্ড রয়েছে যেমন source, cdবা declare- zstyleএই "বিল্টিনগুলি" এর মধ্যে অন্য একটি।
বিল্টিনস এবং শেল অপশনগুলি সাধারণত "গ্লোবাল" এই অর্থে যে শেল প্রক্রিয়া জুড়ে যে কোনও সময় বা প্রসঙ্গে সাধারণত (তবে সর্বদা নয়) প্রযোজ্য / ব্যবহারযোগ্য বা অন্য কথায়, তারা সাধারণত zsh এবং সমস্ত উপ-সিস্টেমের ক্ষেত্রে প্রয়োগ করে (মডিউল)। দ্রষ্টব্য এটি প্রয়োগ করে শেলটি ইন্টারেক্টিভ বা অ-ইন্টারেক্টিভ দোভাষী হিসাবে অন্তর্ভুক্ত কিনা।
সুতরাং, উদাহরণস্বরূপ আপনি ব্যবহার করতে পারেন builtin এর sourceবা cdবা শেল বিকল্প "globstar" কার্যকর থাকবে কিনা কমান্ড প্রম্পটে বা মধ্যে caseএকটি অ-ইন্টারেক্টিভ লিপিতে বা যে একই স্ক্রিপ্টের একটি ফাংশন মধ্যে বিবৃতি।
উপরের অন্য উত্তরের বিপরীতে, zstyleএমন কোনও বিল্টিন নয় যা "কমপিসিস" (কমপ্লিমেন্ট সিস্টেম) মডিউলটির সাথে নির্দিষ্ট, zstyleএটি একটি "গ্লোবাল" বিল্টিন।
zstylezsh/utilমডিউল দ্বারা সংজ্ঞায়িত করা হয় , এর সহজ অর্থ হল কোডটি কীভাবে পার্স করতে হবে এবং "do" zstyleসংজ্ঞা দেয় zsh/zutilমডিউলটিতে।
আপনি এই বাস্তবতাটিকে ঠিক পাশাপাশি ভুলে যেতে পারেন, যেমন evalবাশের জন্য আপনাকে জানার দরকার নেই যে বিল্টিনের কোডটি ফাইলটিতে রয়েছে eval.cতবে zstyleএটির জন্য সহায়তা পেতে এটি জানাতে সহায়তা করে যে zstyleএটি zsh/zutilমডিউলে সংজ্ঞায়িত একটি বিল্টিন এবং এবং zsh/zutilমডিউলটির জন্য ডকুমেন্টেশন চালিয়ে অ্যাক্সেস করা যায় man zshmodules।
সুতরাং traditionতিহ্যগতভাবে শেল অপশনগুলি সাধারণত "গ্লোবাল" হয়ে থাকে, তবে বিবরণ অনুসারে man zshmodules, zsh এর কিছু alচ্ছিক অংশগুলি মডিউলগুলিতে রয়েছে এবং এছাড়াও zshকার্যকারিতা অনেকগুলি শেল ফাংশনে লেখা হয়েছে। (ভিমস্ক্রিপ্টে ভিমের অনেক মূল এবং optionচ্ছিক কার্যকারিতা কীভাবে রচিত হয়েছে তার সমান)।
সুতরাং আপনি যদি কেবলমাত্র এই মডিউল বা ফাংশনগুলিতে প্রযোজ্য বিকল্পগুলি নির্দিষ্ট করতে সক্ষম হতে চান তবে আপনি এটি কীভাবে করবেন?
ঠিক zstyleএটিই তাই, আপনাকে প্রচলিত "গ্লোবাল" শেল বিকল্পগুলির চেয়ে অনেক সূক্ষ্ম পর্যায়ে "লক্ষ্য" বিকল্পগুলি দেওয়ার ক্ষমতা দেয়।
zstyleযুক্তির মাধ্যমে এটি অর্জন করে"pattern"
একটি উদাহরণ কমান্ড যা "কমপ্যাসি" সম্পর্কিত কিছু alচ্ছিক আচরণ কনফিগার করে:
zstyle ':completion::complete:lsof:*' menu yes select
এবং "vcs_info" নির্দিষ্ট কিছু alচ্ছিক আচরণ কনফিগার করা:
zstyle ':vcs_info:*' actionformats \
'%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
তবে এটি সেখানে থামবে না, zstylesপ্রসঙ্গগুলি লক্ষ্য করে নেওয়ার ক্ষমতা অবিশ্বাস্যভাবে শক্তিশালী, উদাহরণস্বরূপ, বলুন আপনি vcs_infoবৈশিষ্ট্যের জন্য কিছু আচরণ / বিকল্পগুলি সংজ্ঞায়িত করতে চেয়েছিলেন , যখন আপনি কোনও .gitসংগ্রহস্থল ছিলেন, কোনও svnরেপোর বিপরীতে , তখন আপনি পরিবর্তন করতে পারেন প্রসঙ্গে প্যাটার্ন
:vcs_info:<svn_or_whatever_SCM_system>:* <style>
কোনও svnরেপো সহ একটি নির্দিষ্ট প্রকল্পের optionচ্ছিক আচরণ সম্পর্কে কী ? তারপর
:vcs_info:<svn_or_whatever_SCM_system>:*:repo-root-name <style>
বোকামিযুক্ত নামযুক্ত এবং অসম্পূর্ণ নথিভুক্ত "(জেড) স্টাইল" এর একমাত্র অস্পষ্ট অর্থপূর্ণ বিবরণ - বাশ থেকে জেড শেল এর শব্দকোষ থেকে এসেছে
styleইন
zsh, স্টাইল মেকানিজম হ'ল শেল অ্যাড-অনগুলি কনফিগার করার একটি নমনীয় উপায় যা সমাপ্তি সিস্টেম এবং সম্পাদক উইজেটগুলির মতো ফাংশন ব্যবহার করে। ভেরিয়েবলের বিপরীতে এগুলি বিভিন্ন প্রসঙ্গে এবং শেল বিকল্পগুলির বিপরীতে তারা মান নিতে পারে। প্রক্রিয়াটি কমান্ড শৈলীর উপর ভিত্তি করে।
এছাড়াও, "হ্যান্ডলিং স্টাইলস" বিভাগে, লেখক আরও বিশদভাবে বর্ণনা করেছেন ...
আরও পরিশীলিত সমাপ্তি ফাংশনগুলির সাথে, আপনি ব্যবহারের আচরণের দিকগুলি ব্যবহার করে কনফিগার করার অনুমতি দিতে পারেন
style।... অনেক সহায়ক ফাংশন আপনার জন্য শৈলী সন্ধান করে তাই আপনার ফাংশনটি বিশেষভাবে কিছু না করেই আপনার ফাংশনটি অনেক স্টাইলের সাথে প্রতিক্রিয়া জানায়। শৈলীর একটি ধারণা একটি নির্দিষ্ট পরিস্থিতিতে সন্ধান করতে, একটি সংখ্যার যুক্তি দিয়ে _ কমপ্লিট_হেল্প ফাংশনটি প্রার্থনা করুন। সাধারণত, আপনি Esc2এরপরে চাপ দিয়ে এটি করতে পারেন Ctrl
-x h। সম্পূর্ণরূপে কনফিগার করার সময় এটি প্রাথমিকভাবে দরকারী কারণ এটি আপনাকে কী স্টাইলগুলি দেখায় এবং সম্পর্কিত প্রসঙ্গটি দেখতে দেয়।
জেডএসএইচ সম্পর্কে সবচেয়ে হতাশাব্যঞ্জকগুলির একটি হ'ল ম্যান পৃষ্ঠাগুলিতে এর বিভিন্ন কমান্ডগুলি কোথায় পাওয়া যাবে তা সন্ধান করা। এক্ষেত্রে জাস্টাইলের জন্য ডকুমেন্টেশনগুলি অনলাইনেman zshmodules বা এখানে পাওয়া যাবে ।
এই বিল্টিন কমান্ডটি শৈলীর সংজ্ঞা এবং অনুসন্ধান করতে ব্যবহৃত হয়। শৈলীগুলি নাম এবং মানগুলির জোড়া হয় যেখানে মানগুলি কোনও সংখ্যক স্ট্রিং সমন্বিত থাকে। এগুলি নিদর্শনগুলির সাথে একসাথে সংরক্ষণ করা হয় এবং অনুসন্ধানটি স্ট্রিং দিয়ে সম্পন্ন করা হয়, তাকে 'প্রসঙ্গ' বলা হয়, যা নিদর্শনগুলির সাথে তুলনা করা হয়। প্রথম মিলের প্যাটার্নের জন্য সঞ্চিত সংজ্ঞাটি ফিরে আসবে।
Zsh স্পেসে ভাল উদাহরণগুলির বিশাল অভাব রয়েছে, এবং ডকুমেন্টেশনটি অবজেক্ট। আমি কিছু সময় অতিবাহিত কিভাবে দিকে তাকিয়ে Prezto , ব্যবহারসমূহ zstyle সেইসাথে পড়া ডক্স এবং কিছু জিনিস চেষ্টা করছে। জাস্টাইল প্রধানত সম্পূর্ণরূপে ব্যবহৃত হয়েছে বলে মনে হয় তবে এটি এমনভাবে ডেটা সংরক্ষণের জন্য সত্য যা বেশ-পুরানো-পরিবেশের ভেরিয়েবলের চেয়ে পরিশীল।
এই সংক্ষিপ্তসারটি দেখায় যে আপনি কীভাবে তথ্য সংরক্ষণ এবং পুনরুদ্ধার করতে জাস্টাইল ব্যবহার করতে পারেন:
# reference: http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzutil-Module
# list all zstyle settings
zstyle -L
# set a string value
zstyle :example:favorites fruit apple
# set an explicit string value
zstyle -s ':example:favorites' 'computer' 'apple'
# assign new $fav variable with -g
zstyle -g fav ':example:favorites' fruit && echo $fav
# be explicit about the assignment data type:
# -a: array, -b: boolean, -s: string
zstyle -b ':example:favorites:vegtable' 'broccoli' no
# test with -t
if zstyle -t ':example:favorites' 'fruit' 'apple'; then
echo "an apple a day keeps the dr. away"
fi
if ! zstyle -t ':example:favorites:vegtable' 'broccoli' 'no'; then
echo "Broccoli is the deadliest plant on Earth - why, it tries to warn you itself with its terrible taste"
fi
# delete a value with -d
zstyle -d ':example:favorites' 'computer'
# list only zstyle settings for a certain pattern
zstyle -L ':example:favorites*'