🔍جستوجو در Yazi با fd، ripgrep، fzf و zoxide
تفاوت find و filter و search، موتور fd و ripgrep، پرش با zoxide.
اینجا جاییه که خیلیها قاطی میکنن، چون یازی سه مفهوم متفاوت داره که همهشون شبیه «جستوجو» به نظر میرسن ولی کاملاً فرق دارن. بذار یه بار برای همیشه حلش کنیم:
| مفهوم | کلید | چیکار میکنه |
|---|---|---|
| Find | / و ? | فقط داخل همین پوشه، مکاننما رو میبره روی اولین چیزی که مطابقت داره. لیست تغییر نمیکنه. |
| Filter | f | لیست رو آب میکنه؛ هر چیزی که مطابق نباشه موقتاً پنهان میشه. |
| Search | s و S | جستوجوی بازگشتی توی همهی زیرپوشهها با fd یا ripgrep و ساختن یه لیست جدید. |
Find — پرش سریع داخل پوشه
| کلید | کاربرد |
|---|---|
| / | جستوجوی رو به جلو در پوشهی فعلی |
| ? | جستوجوی رو به عقب |
| n | نتیجهی بعدی |
| N | نتیجهی قبلی |
این دقیقاً مثل / توی Vim ــه. توی پوشهای که ۳۰۰ تا فایل داره، بهجای اسکرول کردن، / بزن و سه حرف اول اسم فایل رو تایپ کن. یازی همینطور که تایپ میکنی مکاننما رو جابهجا میکنه (تدریجی است).
Filter — تمیزکردن لیست
کلید f رو بزن و مثلاً بنویس \.png$. فیلتر از الگوی regex استفاده میکنه؛ این الگو اسمهای با پسوند PNG رو نگه میداره. حالا میتونی Ctrl + a بزنی و همه رو انتخاب کنی، یا با خیال راحت داخل نتایج بچرخی. با Esc فیلتر برداشته میشه.
[[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 (آرگومانهای اضافهای که مستقیم به اون ابزار پاس داده میشه). چند تا مثال کاربردی:
# جستوجو شامل فایلهای مخفی و نادیدهگرفتهشدهی گیت
[[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 جستوجو کنی ولی کلیدواژه رو خالی بذاری، عملاً همهی فایلهای زیرشاخهها رو توی یه لیست تخت میبینی:
[[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 تاریخچه داشته باشه باید توی شلت فعال باشه:
eval "$(zoxide init bash)"
# میتونی fzf رو هم خوشگلتر کنی:
export FZF_DEFAULT_OPTS="--height 60% --layout=reverse --border --preview-window=right:55%"
sudo dnf install fzf zoxide ابزارهای پرش رو نصب کن و با fzf --version نسخه رو ببین. اگه پلاگین خطای ناسازگاری داد، حداقل نسخهی لازم رو توی مستندات همون نسخهی Yazi بررسی کن.مرتبسازی — پیشوند ,
| کلید | کاربرد |
|---|---|
| ,⇒n | مرتبسازی طبیعی (۱ کوچکتر از ۲ کوچکتر از ۱۰) |
| ,⇒a | مرتبسازی الفبایی |
| ,⇒m | بر اساس زمان آخرین تغییر |
| ,⇒b | بر اساس زمان ساخت |
| ,⇒e | بر اساس پسوند |
| ,⇒s | بر اساس حجم |
| ,⇒r | تصادفی (برای وقتی حوصلهت سر رفته 😄) |
حرف بزرگ همون کلید، ترتیب رو معکوس میکنه. مثلاً , ⇒ M یعنی «جدیدترینها اول».
منبع برای بررسی جزئیات و تغییرات نسخهها: جستوجو و فیلتر در تنظیمات کلیدها.