উটকেলেস মিলের সাথে zsh কীভাবে স্বয়ংক্রিয়রূপে ডিরেক্টরি নামের কনফিগার করা যায়?


9

গ্রহন এবং পুনঃভাগের ফাইলগুলি নেভিগেট করার একটি দুর্দান্ত উপায় রয়েছে।

আমার বর্তমান ডিরেক্টরিতে যদি নিম্নলিখিত ফোল্ডার (বা ফাইল) থাকে

MyReallyLongName
MyReallyLongAndFunName
MyReallyLongAndNotReallyFunName

গ্রহনে আমি কেবলমাত্র মূলধনী অক্ষরগুলি ব্যবহার করে সেগুলিতে নেভিগেট করতে পারি। চিঠিপত্রের সাথে zsh এ আমি টাইপ করতে সক্ষম হতে চাই:

সিডি এমআরএলএফএন (ট্যাব) (প্রবেশ করুন)

MyReallyLongAndFunNameএক ধাপে To োকা

আমি এখনই zsh দিয়ে এটি করতে চাইলে, আমাকে টাইপ করতে হবে My(Tab)Fun(Tab)(Enter)

উত্তর:


6

এটি আমার পক্ষে কাজ করে:

zstyle ':completion:*' matcher-list 'r:[^A-Z0-9]||[A-Z0-9]=** r:|=*' 

তারপরে আমি একটি পরীক্ষার ডিরেক্টরিতে এটি করতে পারি:

touch MyReallyLongName MyReallyLongAndFunName MyReallyLongAndNotReallyFunName
ls MRLANRFN<TAB>
ls MyReallyLongAndNotReallyFunName

আমি ঝেহেল ব্যবহারকারীর গাইডের টিপস থেকে এটি একসাথে আবদ্ধ করেছি


আপনি কি দয়া করে বর্ণনা করতে পারেন আমাকে এই এক্সটেনশনটি কোথায় রাখতে হবে (ফাইল, ফোল্ডার)? আপনি এটি zsh- সম্পূর্ণকরণ প্রকল্পে যুক্ত করতে আগ্রহীও হতে পারেন ।
জেজেডি

এটি আপনার ~ / .zshrc এ যুক্ত করুন
কোডি

এটি পুরোপুরি আশানুরূপ কাজ না করে, সঙ্গে AbcAde AdFg HlAkAd, ls AA<TAB>থেকে সম্পন্ন হয়ে Ad, যখন আমি AbcAde আশা চাই।
arekolek

@arekolek "বিজ্ঞাপন" একটি আংশিক সমাপ্তি। আপনি যদি আবার ট্যাবকে আঘাত করেন (আপনার zsh কনফিগারেশনের উপর নির্ভর করে) আপনি মেলে এমন সমস্ত ফাইল দেখতে পাবেন। এটি তিনটি ফাইল অন্তর্ভুক্ত করা উচিত। তারপরে আপনি মেনু নির্বাচনের সাথে বা সম্পূর্ণটিকে গাইডের জন্য আরও কিছু ফাইল নাম টাইপ করে একটি চয়ন করতে পারেন।
ফোর্ড

@arekolek দুঃখিত - আমি ভুল পড়েছি। আপনি সেখান থেকে কীভাবে বিজ্ঞাপন পেয়েছিলেন তা আমি নিশ্চিত নই। আমি ভেবেছিলাম এটি একটি আংশিক-অস্পষ্ট ম্যাচ, তবে এটি আপনার উদাহরণ থেকে বলা শক্ত। ২ য় ট্যাব আরও কি ফলাফল দেয়?
ফোর্ড

2

_camel_caseআমার ব্যক্তিগতটিতে একটি ফাইল যুক্ত করে ~/.zsh/functions folder( " আপনার $fpathভেরিয়েবলের যে কোনও ফোল্ডারটি নিতে পারেন ) নিম্নলিখিত বিষয়বস্তু দিয়ে আমি" বেশ ভালভাবে "কাজ করতে পেরেছি :

#autoload

[[ -z "$PREFIX" ]] && return 1

relpath=$(dirname $PREFIX)

[[ -e $relpath ]] || return 1

files=$(ls $relpath)

regex=$(echo $(basename $PREFIX) | sed -e 's/\([A-Z][^A-Z]*\)/\1[^A-Z]+/g')

correctedfiles=($(echo $files | grep -P $regex | sed -e :a -e '$!N;s/\n/ /;ta'))

results=($(for file in $correctedfiles; do echo "$relpath/$file"; done))

compadd -U -f -- $results

তারপরে, আমি আমার। / .Zshrc এ নিম্নলিখিত লাইনটি যুক্ত করেছি

zstyle ':completion:*' completer _complete _correct _path_files _camel_case

নোট করুন যে এটি সম্ভবত একটি "ভাল" সমাধান নয় কারণ আমার কাছে zsh এর সমাপ্তির সিস্টেম সম্পর্কে খুব বেশি জ্ঞান নেই (কেবলমাত্র খুব কম লোকের কাছে আমার ধারণা আছে) তবে এটি আপনার প্রশ্নে বর্ণিত ঠিক তেমনটি করে।


এটি কেবল কিছুটা কাজ করে .. mkdir AaBbCcDd সিডি এবিসিডি (ট্যাব) => সিডি। / Ie। স্বতঃসমাপ্তি ব্যর্থ হয়
রোহিত মনোকারন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.