فهرست سریع فصل‌ها
متوسطفصل 7 از 20⏱ حدود 12 دقیقه

🔍جست‌وجو در Yazi با fd، ripgrep، fzf و zoxide

تفاوت find و filter و search، موتور fd و ripgrep، پرش با zoxide.

اینجا جاییه که خیلی‌ها قاطی می‌کنن، چون یازی سه مفهوم متفاوت داره که همه‌شون شبیه «جست‌وجو» به نظر می‌رسن ولی کاملاً فرق دارن. بذار یه بار برای همیشه حلش کنیم:

مفهومکلیدچی‌کار می‌کنه
Find/ و ?فقط داخل همین پوشه، مکان‌نما رو می‌بره روی اولین چیزی که مطابقت داره. لیست تغییر نمی‌کنه.
Filterfلیست رو آب می‌کنه؛ هر چیزی که مطابق نباشه موقتاً پنهان می‌شه.
Searchs و Sجست‌وجوی بازگشتی توی همه‌ی زیرپوشه‌ها با fd یا ripgrep و ساختن یه لیست جدید.

Find — پرش سریع داخل پوشه

کلیدکاربرد
/جست‌وجوی رو به جلو در پوشه‌ی فعلی
?جست‌وجوی رو به عقب
nنتیجه‌ی بعدی
Nنتیجه‌ی قبلی

این دقیقاً مثل / توی Vim ــه. توی پوشه‌ای که ۳۰۰ تا فایل داره، به‌جای اسکرول کردن، / بزن و سه حرف اول اسم فایل رو تایپ کن. یازی همین‌طور که تایپ می‌کنی مکان‌نما رو جابه‌جا می‌کنه (تدریجی است).

Filter — تمیزکردن لیست

کلید f رو بزن و مثلاً بنویس \.png$. فیلتر از الگوی regex استفاده میکنه؛ این الگو اسم‌های با پسوند PNG رو نگه میداره. حالا می‌تونی Ctrl + a بزنی و همه رو انتخاب کنی، یا با خیال راحت داخل نتایج بچرخی. با Esc فیلتر برداشته می‌شه.

فیلتر هوشمند (حساس‌نبودن به بزرگی/کوچکی حروف)
toml

[[mgr.prepend_keymap]]
on   = "f"
run  = "filter --smart"
desc = "فیلتر هوشمند"
💡فیلتر روی جست‌وجو هم کار می‌کنه
اول با s یه جست‌وجوی بازگشتی بزن، بعد روی نتایجش f بزن تا بازم بازش ریزتر کنی. ترکیب این دو تا آدم رو بی‌نیاز از خیلی از دستورهای پیچیده‌ی find می‌کنه.

Search — پیدا کردن فایل در عمق دنیا

کلیدکاربرد
sجست‌وجوی نام فایل به‌صورت بازگشتی با fd
Sجست‌وجوی محتوای فایل‌ها با ripgrep
Ctrl⇒sکنسل کردن جست‌وجوی در حال اجرا
Escخروج از نتایج و برگشت به پوشه‌ی واقعی

نتیجه‌ی جست‌وجو یه «پوشه‌ی مجازی» ــه: فایل‌هایی که از کل زیرشاخه‌ها جمع شدن، توی یه لیست تخت. می‌تونی همون‌جا انتخاب کنی، کپی کنی، حذف کنی. با Esc برمی‌گردی به دنیای واقعی.

سفارشی کردن موتور جست‌وجو

دستور search دو تا گزینه‌ی مهم داره: --via (موتور: fd، rg یا rga) و --args (آرگومان‌های اضافه‌ای که مستقیم به اون ابزار پاس داده می‌شه). چند تا مثال کاربردی:

~/.config/yazi/keymap.toml
toml

# جست‌وجو شامل فایل‌های مخفی و نادیده‌گرفته‌شده‌ی گیت
[[mgr.prepend_keymap]]
on   = "s"
run  = 'search --via=fd --args="--hidden --no-ignore"'
desc = "جست‌وجوی کامل نام فایل"

# جست‌وجوی محتوا با حساس‌نبودن به حروف بزرگ و کوچک
[[mgr.prepend_keymap]]
on   = "S"
run  = 'search --via=rg --args="--smart-case --hidden"'
desc = "جست‌وجوی محتوا"

# جست‌وجو داخل PDF و داکس‌ها با ripgrep-all
[[mgr.prepend_keymap]]
on   = [ "g", "a" ]
run  = "search --via=rga"
desc = "جست‌وجو داخل PDF و آفیس"

نمای تخت (Flat view) — همه‌ی فایل‌های زیرشاخه‌ها یکجا

یه ترفند خفن: اگه با fd جست‌وجو کنی ولی کلیدواژه رو خالی بذاری، عملاً همه‌ی فایل‌های زیرشاخه‌ها رو توی یه لیست تخت می‌بینی:

keymap.toml
toml

[[mgr.prepend_keymap]]
on   = [ "g", "F" ]
run  = 'search_do --via=fd --args="-d 3"'
desc = "نمای تخت تا عمق ۳ پوشه"
⚠️روی پوشه‌های غول‌پیکر مواظب باش
نمای تخت روی / یا ~ بدون محدودیت عمق می‌تونه صدها هزار فایل بیاره. همیشه با -d عمق رو محدود کن.

پرش فازی با fzf و zoxide

کلیدکاربرد
zپرش به پوشه یا نمایان کردن فایل با fzf (جست‌وجوی فازی زیرشاخه‌ها)
Zپرش به پوشه‌های پربازدید با zoxide

این دوتا مکمل همدیگه‌ان: z برای وقتی که می‌دونی فایل یه جایی همین اطرافه ولی نمی‌دونی کجا؛ و Z برای وقتی که پوشه رو قبلاً رفتی و می‌خوای سریع برگردی. برای اینکه zoxide تاریخچه داشته باشه باید توی شلت فعال باشه:

~/.bashrc
bash

eval "$(zoxide init bash)"

# می‌تونی fzf رو هم خوشگل‌تر کنی:
export FZF_DEFAULT_OPTS="--height 60% --layout=reverse --border --preview-window=right:55%"
🎩fzf روی فدورا
با sudo dnf install fzf zoxide ابزارهای پرش رو نصب کن و با fzf --version نسخه رو ببین. اگه پلاگین خطای ناسازگاری داد، حداقل نسخه‌ی لازم رو توی مستندات همون نسخه‌ی Yazi بررسی کن.

مرتب‌سازی — پیشوند ,

کلیدکاربرد
,⇒nمرتب‌سازی طبیعی (۱ کوچک‌تر از ۲ کوچک‌تر از ۱۰)
,⇒aمرتب‌سازی الفبایی
,⇒mبر اساس زمان آخرین تغییر
,⇒bبر اساس زمان ساخت
,⇒eبر اساس پسوند
,⇒sبر اساس حجم
,⇒rتصادفی (برای وقتی حوصله‌ت سر رفته 😄)

حرف بزرگ همون کلید، ترتیب رو معکوس می‌کنه. مثلاً , ⇒ M یعنی «جدیدترین‌ها اول».

🚀مرتب‌سازی مخصوص هر پوشه
می‌خوای فقط پوشه‌ی Downloads همیشه بر اساس تاریخ مرتب باشه و بقیه الفبایی؟ این کار با یه پلاگین کوچیک Lua شدنیه که توی فصل «init.lua» کامل نوشتمش.

منبع برای بررسی جزئیات و تغییرات نسخه‌ها: جست‌وجو و فیلتر در تنظیمات کلیدها.

آموزش کار با Yazi برای توزیع‌های مختلف لینوکس کاربرد داره؛ مثال‌های نصب و تنظیم محیط با اولویت کاربری نوشته شدن که فدورا رو با تنظیمات پیش‌فرض نصب کرده. دستور نصب بسته‌ها و ابزارهای جانبی در توزیع‌های دیگه ممکنه متفاوت باشه.