فهرست سریع فصل‌ها
پیشرفتهفصل 12 از 20⏱ حدود 13 دقیقه

⌨️تنظیم میان‌برهای Yazi در keymap.toml

prepend و append، لایه‌ها، کلید leader و ساخت workflow شخصی.

رسیدیم به بخشی که یازی رو تبدیل می‌کنه به ابزار شخصی خودت. توی ~/.config/yazi/keymap.toml می‌تونی هر کلیدی رو به هر دستوری (یا حتی چند دستور پشت سر هم) وصل کنی.

لایه‌ها (Layers)

یازی هشت تا «لایه» داره و هر کلید فقط توی لایه‌ی خودش معنی داره. مثلاً j توی لیست فایل‌ها یعنی «پایین» ولی توی جعبه‌ی ورودی یعنی «حرف j».

[mgr]لیست فایل‌ها — اصلی‌ترین لایه
[tasks]پنجره‌ی مدیر وظایف
[spot]پنجره‌ی اطلاعات فایل (کلید Tab)
[pick]منوهای انتخابی مثل «باز کردن با»
[input]جعبه‌های ورودی متن (تغییر نام، ساخت، فیلتر)
[confirm]پنجره‌های تأیید (حذف، بازنویسی)
[cmp]لیست تکمیل خودکار مسیر
[help]منوی راهنمای F1
⚠️اسم لایه در نسخه‌های قدیمی
قبلاً اسم لایه‌ی اصلی [manager] بود و از نسخه‌های جدید شده [mgr]. اگه کانفیگ قدیمی از اینترنت کپی کردی و کار نکرد، اول همین رو چک کن.

اولویت میان‌برها

کلیدهای prepend_keymap قبل از پیش‌فرض‌ها بررسی میشن و میتونن جای اون‌ها رو بگیرن؛append_keymap بعد از پیش‌فرض‌ها میاد. برای تغییر یه میان‌بر موجود از prepend استفاده کن. نمونه‌های این فصل مستقل هستن؛ برای یه کلید، چند تعریف متناقض رو کنار هم کپی نکن.

دو سبک نوشتن (فقط یکی رو انتخاب کن)

سبک آرایه‌ای
toml

[mgr]
prepend_keymap = [
	{ on = "<C-n>", run = "shell -- dragon -x -i -T %h", desc = "کشیدن و رها کردن" },
	{ on = [ "g", "p" ], run = "cd ~/Projects", desc = "برو به پروژه‌ها" },
]
سبک جدولی — خواناتر برای کانفیگ‌های بزرگ
toml

[[mgr.prepend_keymap]]
on   = "<C-n>"
run  = "shell -- dragon -x -i -T %h"
desc = "کشیدن و رها کردن"

[[mgr.prepend_keymap]]
on   = [ "g", "p" ]
run  = "cd ~/Projects"
desc = "برو به پروژه‌ها"
🔥این دو تا رو با هم قاطی نکن
توی یه فایل TOML نمی‌تونی هم prepend_keymap = [...] داشته باشی هم [[mgr.prepend_keymap]]. زبان TOML اجازه نمی‌ده و یازی ارور پارس می‌ده.

نمادگذاری کلیدها

<C-a>کنترل + a
<A-x>آلت + x
<C-S-b>کنترل + شیفت + b
<Space>فاصله
<Enter>اینتر
<Esc>اسکیپ
<Tab> / <S-Tab>تب و شیفت‌تب
<Backspace> / <Delete>بک‌اسپیس و دلیت
<Up> <Down> <Left> <Right>کلیدهای جهت‌نما
<Home> <End> <PageUp>خانه، پایان، صفحه بالا
<F1> تا <F12>کلیدهای تابعی
[ "g", "p" ]دنباله: اول g بعد p

برای حروف بزرگ فقط خود حرف بزرگ رو بنویس: "G" یعنی شیفت + g. برای شیفت با کلیدهای خاص از <S-...> استفاده کن.

چند دستور با یک کلید

keymap.toml
toml

# برو /tmp و بعد فایل‌های مخفی رو نشون بده
[[mgr.prepend_keymap]]
on   = [ "g", "T" ]
run  = [ "cd /tmp", "hidden show" ]
desc = "رفتن به tmp با نمایش فایل‌های مخفی"

# انتخاب همه و کپی، در یک کلید
[[mgr.prepend_keymap]]
on   = "<C-y>"
run  = [ "toggle_all --state=on", "yank" ]
desc = "کپی کل محتویات پوشه"

الگوی کلید Leader — مثل نئوویم

اگه از Neovim میای، عادت داری به فاصله به‌عنوان leader. توی یازی هم می‌شه:

keymap.toml
toml

# دنباله‌ها قبل از میان‌بر پیش‌فرض Space بررسی میشن
# یه دستور مستقل برای Space قبل از این دنباله‌ها نذار
[[mgr.prepend_keymap]]
on   = [ "<Space>", "f" ]
run  = "plugin fzf"
desc = "جست‌وجوی فازی"

[[mgr.prepend_keymap]]
on   = [ "<Space>", "g" ]
run  = 'shell "lazygit" --block'
desc = "باز کردن lazygit"

[[mgr.prepend_keymap]]
on   = [ "<Space>", "t" ]
run  = 'shell "$SHELL" --block'
desc = "ترمینال در همین پوشه"
⚠️ولی حواست باشه
اگه Space بشه leader، دیگه کلید «انتخاب فایل» نداری! پیشنهاد می‌کنم انتخاب رو به <C-Space> یا v منتقل کنی، یا کلاً از حرف دیگه‌ای مثل , به‌عنوان leader استفاده کنی.

غیرفعال کردن یه کلید

keymap.toml
toml

# دیگه اشتباهی D نزنم و فایل دائمی پاک نشه
[[mgr.prepend_keymap]]
on   = "D"
run  = "noop"
desc = "غیرفعال"

لایه‌های دیگه رو هم تنظیم کن

keymap.toml
toml

# Esc توی جعبه‌ی ورودی، مستقیم ببنده (به‌جای رفتن به حالت ویم)
[[input.prepend_keymap]]
on   = "<Esc>"
run  = "close"
desc = "بستن ورودی"

# توی پنجره‌ی تأیید، y و n
[[confirm.prepend_keymap]]
on   = "y"
run  = "close --submit"
desc = "تأیید"

[[confirm.prepend_keymap]]
on   = "n"
run  = "close"
desc = "انصراف"

یه keymap کامل و آماده برای شروع

این یه نمونه‌ی قابل تغییره. کلیدهای دلخواهت رو به فایل موجود اضافه کن؛ برای chmod اول پلاگین هم‌نام رو نصب کن. توی ترمینال‌هایی با پروتکل قدیمی، Ctrl+i با Tab یکسانه؛ برای تاریخچه میتونی از H و L پیش‌فرض هم استفاده کنی:

~/.config/yazi/keymap.toml
toml

# ---------- ناوبری ----------
[[mgr.prepend_keymap]]
on = "<C-d>"
run = "arrow 50%"
desc = "نصف صفحه پایین"

[[mgr.prepend_keymap]]
on = "<C-u>"
run = "arrow -50%"
desc = "نصف صفحه بالا"

[[mgr.prepend_keymap]]
on = "<C-o>"
run = "back"
desc = "عقب در تاریخچه"

[[mgr.prepend_keymap]]
on = "<C-i>"
run = "forward"
desc = "جلو در تاریخچه"

# ---------- میان‌برهای پوشه ----------
[[mgr.prepend_keymap]]
on = [ "g", "p" ]
run = "cd ~/Projects"
desc = "پوشه‌ی پروژه‌ها"

[[mgr.prepend_keymap]]
on = [ "g", "e" ]
run = "cd /etc"
desc = "تنظیمات سیستم"

[[mgr.prepend_keymap]]
on = [ "g", "m" ]
run = "cd /run/media/$USER"
desc = "دستگاه‌های متصل (فدورا)"

[[mgr.prepend_keymap]]
on = [ "g", "r" ]
run = 'shell -- root=$(git rev-parse --show-toplevel) && ya emit cd "$root"'
desc = "ریشه‌ی مخزن گیت"

# ---------- شل و ابزار ----------
[[mgr.prepend_keymap]]
on = "!"
run = 'shell "$SHELL" --block'
desc = "شل در همین پوشه"

[[mgr.prepend_keymap]]
on = [ "c", "m" ]
run = "plugin chmod"
desc = "تغییر مجوزها"

# ---------- امنیت ----------
[[mgr.prepend_keymap]]
on = "D"
run = "remove --permanently"
desc = "حذف دائمی (با تأیید)"

# ---------- ورودی ----------
[[input.prepend_keymap]]
on = "<Esc>"
run = "close"
desc = "بستن ورودی"
💡همیشه desc بنویس
فیلد desc فقط تزئینی نیست: توی منوی F1 و توی پنجره‌ی «which» (وقتی پیشوند می‌زنی) همین متن نمایش داده می‌شه. اگه فارسی بنویسی، فارسی می‌بینی!

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