urxvt-matcher(1) RXVT-UNICODE urxvt-matcher(1)

matcher - تطبیق رشته‌ها در خروجی ترمینال و تغییر نحوهٔ نمایش آن‌ها

از پالایش خط‌به‌خط نمایش ("on_line_update") برای زیرخط‌دار کردن متنی که با یک الگوی خاص مطابقت دارد و کلیک‌پذیر کردن آن استفاده می‌کند. هنگام کلیک با کلید ماوس مشخص‌شده در منبع "matcher.button" (پیش‌فرض ۲ یا کلید میانی)، برنامه‌ای که در منبع "matcher.launcher" مشخص شده است (به‌صورت پیش‌فرض، منبع "url-launcher"، یعنی "sensible-browser") همراه با متن مطابقت‌یافته به‌عنوان نخستین آرگومان اجرا خواهد شد. پیکربندی پیش‌فرض برای تطبیق URLها و راه‌اندازی مرورگر وب، مشابه افزونهٔ پیشین «mark-urls»، مناسب است.

الگوی پیش‌فرض برای تطبیق URLها می‌تواند با استفاده از منبع "matcher.pattern.0" بازنویسی شود، و الگوهای دیگر را می‌توان با الگوهای شماره‌گذاری‌شده، به روشی مشابه افزونهٔ «selection»، مشخص کرد. اجراکننده (launcher) نیز می‌تواند برای هر الگو به‌طور جداگانه سفارشی‌سازی شود.

امکان فعال‌سازی جدیدترین مورد مطابقت‌یافته یا فهرستی از موارد تطابق از طریق صفحه‌کلید وجود دارد. کافی است یک keysym را به «matcher:last» یا «matcher:list» متصل (bind) کنید، همان‌طور که در مثال زیر دیده می‌شود.

کنش "matcher:select" حالتی را فعال می‌کند که در آن می‌توان با استفاده از صفحه‌کلید روی موارد تطابق پیمایش کرد و آن‌ها را فعال نمود یا در بریده‌دان (clipboard) رونوشت برداشت. در زمانی که این حالت فعال است، ورودی/خروجی عادی ترمینال به حالت تعلیق درمی‌آید و کلیدهای میانبر زیر شناخته می‌شوند:

"Up"
جستجو برای تطابق به سمت بالا.
"Down"
جستجو برای تطابق به سمت پایین.
"Home"
پرش به بالاترین مورد تطابق.
"End"
پرش به پایین‌ترین مورد تطابق.
"Escape"
خروج از این حالت و بازگشت به نقطه‌ای که جستجو از آنجا آغاز شده بود.
"Enter"
فعال‌سازی مورد تطابق فعلی.
"y"
رونوشت برداشتن از مورد تطابق فعلی در بریده‌دان.

همچنین امکان گردش میان موارد منطبق با استفاده از ترکیب کلیدی که به کنش "matcher:select" متصل شده باشد وجود دارد.

مثال: بارگذاری و استفاده از افزونهٔ matcher با مقادیر پیش‌فرض.

URxvt.perl-ext:           default,matcher

مثال: استفاده از یک پیکربندی سفارشی.

URxvt.url-launcher:       sensible-browser
URxvt.keysym.C-Delete:    matcher:last
URxvt.keysym.M-Delete:    matcher:list
URxvt.matcher.button:     1
URxvt.matcher.pattern.1:  \\bwww\\.[\\w-]+\\.[\\w./?&@#-]*[\\w/-]
URxvt.matcher.pattern.2:  \\B(/\\S+?):(\\d+)(?=:|$)
URxvt.matcher.launcher.2: gvim +$2 $1

برنامه Urxvt تمام متن‌ها را به‌صورت یونیکد (unicode) ذخیره می‌کند؛ در یک کدگذاری ویژه که برای هر ستون از یک نویسه/نقطه کد (code point) استفاده می‌کند. بنا به دلایل گوناگون، عبارات منظم مستقیماً با این کدگذاری مطابقت داده می‌شوند، به این معنی که چند نکته را باید در نظر داشته باشید:

منابع X / آرگومان‌های خط فرمان دارای کدگذاری محلی (locale) هستند
عبارات منظمی که از خط فرمان یا منابع دریافت می‌شوند، از کدگذاری محلی (locale) به یونیکد تبدیل خواهند شد. این امر می‌تواند تعداد نقاط کد را در هر نویسه تغییر دهد.
نویسه‌های عریض با $urxvt::NOCHAR در ستون‌ها فاصله‌گذاری (pad) می‌شوند
نویسه‌های عریض (مانند کانجی و گاهی تب‌ها) با مقدار یک نویسهٔ ویژه ($urxvt::NOCHAR) فاصله‌گذاری (pad) می‌شوند. این بدان معناست که ساختارهایی مانند "\w" یا "." تنها با بخشی از یک نویسه تطابق خواهند داشت، زیرا $urxvt::NOCHAR با "\w" تطابق ندارد و هر دو فقط با نخستین «ستون» یک نویسهٔ عریض مطابقت دارند.

این به این معنی است که باید $urxvt::NOCHAR را در بخش‌هایی از عبارات منظم که ممکن است با نویسه‌های عریض تطابق داشته باشند بگنجانید. برای نمونه، برای تطبیق با "\w+" شاید بخواهید در عوض از "[\w$urxvt::NOCHAR]+" استفاده کنید، و برای تطبیق با یک نویسهٔ منفرد (".") ممکن است بخواهید به جای آن از ".$urxvt::NOCHAR*" بهره ببرید.

2025-10-24 9.31