⌨️تنظیم میانبرهای 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 استفاده کن. نمونههای این فصل مستقل هستن؛ برای یه کلید، چند تعریف متناقض رو کنار هم کپی نکن.
دو سبک نوشتن (فقط یکی رو انتخاب کن)
[mgr]
prepend_keymap = [
{ on = "<C-n>", run = "shell -- dragon -x -i -T %h", desc = "کشیدن و رها کردن" },
{ on = [ "g", "p" ], run = "cd ~/Projects", desc = "برو به پروژهها" },
]
[[mgr.prepend_keymap]]
on = "<C-n>"
run = "shell -- dragon -x -i -T %h"
desc = "کشیدن و رها کردن"
[[mgr.prepend_keymap]]
on = [ "g", "p" ]
run = "cd ~/Projects"
desc = "برو به پروژهها"
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-...> استفاده کن.
چند دستور با یک کلید
# برو /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. توی یازی هم میشه:
# دنبالهها قبل از میانبر پیشفرض 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 استفاده کنی.غیرفعال کردن یه کلید
# دیگه اشتباهی D نزنم و فایل دائمی پاک نشه
[[mgr.prepend_keymap]]
on = "D"
run = "noop"
desc = "غیرفعال"
لایههای دیگه رو هم تنظیم کن
# 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 پیشفرض هم استفاده کنی:
# ---------- ناوبری ----------
[[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 فقط تزئینی نیست: توی منوی F1 و توی پنجرهی «which» (وقتی پیشوند میزنی) همین متن نمایش داده میشه. اگه فارسی بنویسی، فارسی میبینی!