.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "urxvt-matcher 1" .TH urxvt-matcher 1 2025-10-24 9.31 RXVT-UNICODE .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" matcher \- تطبیق رشته‌ها در خروجی ترمینال و تغییر نحوهٔ نمایش آن‌ها .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" از پالایش خط‌به‌خط نمایش (\f(CW\*(C`on_line_update\*(C'\fR) برای زیرخط‌دار کردن متنی که با یک الگوی خاص مطابقت دارد و کلیک‌پذیر کردن آن استفاده می‌کند. هنگام کلیک با کلید ماوس مشخص‌شده در منبع \f(CW\*(C`matcher.button\*(C'\fR (پیش‌فرض ۲ یا کلید میانی)، برنامه‌ای که در منبع \f(CW\*(C`matcher.launcher\*(C'\fR مشخص شده است (به‌صورت پیش‌فرض، منبع \f(CW\*(C`url\-launcher\*(C'\fR، یعنی \f(CW\*(C`sensible\-browser\*(C'\fR) همراه با متن مطابقت‌یافته به‌عنوان نخستین آرگومان اجرا خواهد شد. پیکربندی پیش‌فرض برای تطبیق URLها و راه‌اندازی مرورگر وب، مشابه افزونهٔ پیشین «mark\-urls»، مناسب است. .PP الگوی پیش‌فرض برای تطبیق URLها می‌تواند با استفاده از منبع \&\f(CW\*(C`matcher.pattern.0\*(C'\fR بازنویسی شود، و الگوهای دیگر را می‌توان با الگوهای شماره‌گذاری‌شده، به روشی مشابه افزونهٔ «selection»، مشخص کرد. اجراکننده (launcher) نیز می‌تواند برای هر الگو به‌طور جداگانه سفارشی‌سازی شود. .PP امکان فعال‌سازی جدیدترین مورد مطابقت‌یافته یا فهرستی از موارد تطابق از طریق صفحه‌کلید وجود دارد. کافی است یک keysym را به «matcher:last» یا «matcher:list» متصل (bind) کنید، همان‌طور که در مثال زیر دیده می‌شود. .PP کنش \f(CW\*(C`matcher:select\*(C'\fR حالتی را فعال می‌کند که در آن می‌توان با استفاده از صفحه‌کلید روی موارد تطابق پیمایش کرد و آن‌ها را فعال نمود یا در بریده‌دان (clipboard) رونوشت برداشت. در زمانی که این حالت فعال است، ورودی/خروجی عادی ترمینال به حالت تعلیق درمی‌آید و کلیدهای میانبر زیر شناخته می‌شوند: .ie n .IP """Up""" 4 .el .IP \f(CWUp\fR 4 .IX Item "Up" جستجو برای تطابق به سمت بالا. .ie n .IP """Down""" 4 .el .IP \f(CWDown\fR 4 .IX Item "Down" جستجو برای تطابق به سمت پایین. .ie n .IP """Home""" 4 .el .IP \f(CWHome\fR 4 .IX Item "Home" پرش به بالاترین مورد تطابق. .ie n .IP """End""" 4 .el .IP \f(CWEnd\fR 4 .IX Item "End" پرش به پایین‌ترین مورد تطابق. .ie n .IP """Escape""" 4 .el .IP \f(CWEscape\fR 4 .IX Item "Escape" خروج از این حالت و بازگشت به نقطه‌ای که جستجو از آنجا آغاز شده بود. .ie n .IP """Enter""" 4 .el .IP \f(CWEnter\fR 4 .IX Item "Enter" فعال‌سازی مورد تطابق فعلی. .ie n .IP """y""" 4 .el .IP \f(CWy\fR 4 .IX Item "y" رونوشت برداشتن از مورد تطابق فعلی در بریده‌دان. .PP همچنین امکان گردش میان موارد منطبق با استفاده از ترکیب کلیدی که به کنش \f(CW\*(C`matcher:select\*(C'\fR متصل شده باشد وجود دارد. .PP مثال: بارگذاری و استفاده از افزونهٔ matcher با مقادیر پیش‌فرض. .PP .Vb 1 \& URxvt.perl\-ext: default,matcher .Ve .PP مثال: استفاده از یک پیکربندی سفارشی. .PP .Vb 7 \& 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: \e\ebwww\e\e.[\e\ew\-]+\e\e.[\e\ew./?&@#\-]*[\e\ew/\-] \& URxvt.matcher.pattern.2: \e\eB(/\e\eS+?):(\e\ed+)(?=:|$) \& URxvt.matcher.launcher.2: gvim +$2 $1 .Ve .SS "کدگذاری عبارات منظم/تطبیق نویسه‌های عریض (wide character)" .IX Subsection "Regex encoding/wide character matching" برنامه Urxvt تمام متن‌ها را به‌صورت یونیکد (unicode) ذخیره می‌کند؛ در یک کدگذاری ویژه که برای هر ستون از یک نویسه/نقطه کد (code point) استفاده می‌کند. بنا به دلایل گوناگون، عبارات منظم مستقیماً با این کدگذاری مطابقت داده می‌شوند، به این معنی که چند نکته را باید در نظر داشته باشید: .IP "منابع X / آرگومان‌های خط فرمان دارای کدگذاری محلی (locale) هستند" 4 .IX Item "X resources/command line arguments are locale-encoded" عبارات منظمی که از خط فرمان یا منابع دریافت می‌شوند، از کدگذاری محلی (locale) به یونیکد تبدیل خواهند شد. این امر می‌تواند تعداد نقاط کد را در هر نویسه تغییر دهد. .ie n .IP "نویسه‌های عریض با $urxvt::NOCHAR در ستون‌ها فاصله‌گذاری (pad) می‌شوند" 4 .el .IP "نویسه‌های عریض با \f(CW$urxvt::NOCHAR\fR در ستون‌ها فاصله‌گذاری (pad) می‌شوند" 4 .IX Item "Wide characters are column-padded with $urxvt::NOCHAR" نویسه‌های عریض (مانند کانجی و گاهی تب‌ها) با مقدار یک نویسهٔ ویژه (\f(CW$urxvt::NOCHAR\fR) فاصله‌گذاری (pad) می‌شوند. این بدان معناست که ساختارهایی مانند \f(CW\*(C`\ew\*(C'\fR یا \f(CW\*(C`.\*(C'\fR تنها با بخشی از یک نویسه تطابق خواهند داشت، زیرا \&\f(CW$urxvt::NOCHAR\fR با \f(CW\*(C`\ew\*(C'\fR تطابق ندارد و هر دو فقط با نخستین «ستون» یک نویسهٔ عریض مطابقت دارند. .Sp این به این معنی است که باید \f(CW$urxvt::NOCHAR\fR را در بخش‌هایی از عبارات منظم که ممکن است با نویسه‌های عریض تطابق داشته باشند بگنجانید. برای نمونه، برای تطبیق با \f(CW\*(C`\ew+\*(C'\fR شاید بخواهید در عوض از \f(CW\*(C`[\ew$urxvt::NOCHAR]+\*(C'\fR استفاده کنید، و برای تطبیق با یک نویسهٔ منفرد (\f(CW\*(C`.\*(C'\fR) ممکن است بخواهید به جای آن از \f(CW\*(C`.$urxvt::NOCHAR*\*(C'\fR بهره ببرید.