গাছ অনুক্রমের কোথাও পাওয়া একটি ডিরেক্টরি পরিবর্তন


0

আমি প্রায়শই টাইপ করলাম:

cd a/directory/I/use/a/lot

এবং যে ডিরেক্টরির ভিতরে আমি অনেক cdপিছনে ফোল্ডার আছে ।

একটি oh-my-zshপ্লাগইন যা টাইপ করার অনুমতি দেয়:

cd somd<TAB>

এবং তারপরে অটোকম্পলেটস ডিরেক্টরিগুলির একটি তালিকা যার নামের মধ্যে স্ট্রিং রয়েছে somedএবং যেগুলি বর্তমান ডিরেক্টরি থেকে অ্যাক্সেসযোগ্য ? উদাহরণস্বরূপ ডিরেক্টরি গঠন দেওয়া

somedirX
foo/bar/somedirY
baz/somedirZ/bum

টাইপিং cd somed<TAB>এই সমাপ্তি তালিকা ফিরে করা উচিত

somedirX
somedirY
somedirZ

আমি এখনো কিছু খুঁজে পাইনি।


না, তালিকাটি somedirX foo/bar/somedirY baz/somedirZঅন্যথায় cdকাজ করবে না।
xenoid

উত্তর:


0

প্রথমত, আপনাকে সম্পন্ন করার জন্য একটি ফাংশন সংজ্ঞায়িত করতে হবে:

_children_dirs() {
    find . -type d -name "${words[CURRENT]}*" -printf "%P\n" \
        | while read -r line; do
      compadd -U -X "Subdirectories: " "$line"
    done
    compstate[insert]=menu # no expand
}

এই ফাংশনটি এখন এর সাথে সম্পূরক হিসাবে ব্যবহার করা যেতে পারে cd:

compdef _children_dirs cd

যাইহোক, আমি মনে করি না যে শেষ কমান্ডটি ব্যবহার করা ভাল ধারণা। প্রকৃতপক্ষে, আপনার হোম ডিরেক্টরি থেকে এটি করার চেষ্টা করুন এবং আপনি কিছুক্ষণের জন্য আপনার শেলটি বন্ধ করুন ( Ctrl + c বন্ধ করতে)। একটি ভাল সমাধান এই সমাপ্তির জন্য একটি কী ক্রম বরাদ্দ করা হতে পারে এবং এটি প্রয়োজন এবং নিরাপদ যখনই এটি ব্যবহার করতে পারে:

zstyle ':completion:children-dirs:*' completer _children_dirs
zle -C children-dirs menu-complete _generic
bindkey '^Y' children-dirs

এর সাথে, Ctrl + y শিশুদের_ dirs সমাপ্তির ট্রিগার করবে ।

আরেকটি সমাধান যা আমি মনে করি ভাল, যদি আপনি অন্য কমান্ড ব্যবহার করতে প্রস্তুত হন।

function ccd { cd $1 }
compdef _children_dirs ccd

এই ব্লকটি একটি নতুন কমান্ড ccd সংজ্ঞায়িত করে যা _ _ kids_dirs_ কে সম্পূর্ণরূপে (তাই TAB দিয়ে ট্রিগার করে) ব্যবহার করে।

আপনি নাম ফিল্টার ব্যক্তিগতকৃত করতে পারেন খোঁজ সঙ্গে ফাইলের নাম কোথাও প্যাটার্ন জন্য অনুসন্ধান করতে: "*${words[CURRENT]}*"

সম্পাদনা: আমি zsh এর জন্য একটি প্লাগইন তৈরি করেছি ।

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