| fzf(1) | fzf - a command-line fuzzy finder | fzf(1) |
نام (NAME)
fzf - ابزار جستجوگر فازی خط فرمان
خلاصه دستور (SYNOPSIS)
fzf [گزینهها]
توضیحات (DESCRIPTION)
ابزار fzf یک برنامه فیلتر تعاملی برای هر نوع فهرستی است.
این ابزار یک الگوریتم تطبیق «فازی» را پیادهسازی میکند، بنابراین میتوانید به سرعت الگوها را با حروفی حذفشده تایپ کرده و همچنان نتایج مورد نظر خود را دریافت کنید.
گزینهها (OPTIONS)
یادداشت (NOTE)
- بیشتر گزینههای طولانی دارای نسخهای متضاد با پیشوند
- --no- هستند.
جستجو (SEARCH)
- -x, --extended
- حالت جستجوی گسترشیافته (Extended-search). به صورت پیشفرض فعال است. میتوانید آن را با +x یا --no-extended غیرفعال کنید.
- -e, --exact
- فعال کردن تطبیق دقیق (Exact-match).
- -i, --ignore-case
- تطبیق غیرحساس به بزرگی و کوچکی حروف (پیشفرض: تطبیق هوشمند smart-case).
- +i, --no-ignore-case
- تطبیق حساس به بزرگی و کوچکی حروف.
- --smart-case
- تطبیق هوشمند حروف (پیشفرض). در این حالت، جستجو به صورت پیشفرض به حروف کوچک و بزرگ حساس نیست، اما اگر عبارت جستجو دارای هرگونه حرف بزرگ باشد، جستجو به حروف بزرگ و کوچک حساس خواهد شد.
- --literal
- عدم نرمالسازی حروف لاتین برای تطبیق (مقایسه عینی کاراکترها).
- --scheme=SCHEME
- انتخاب طرح امتیازدهی (Scoring scheme) متناسب با انواع مختلف ورودی.
- --algo=TYPE
- الگوریتم
تطبیق فازی
(پیشفرض: v2)
v2 الگوریتم امتیازدهی بهینه (کیفیت)
v1 سریعتر اما یافتن نتیجه بهینه تضمین نمیشود (کارایی) - -n, --nth=N[,..]
- فهرست جداشده با کاما از عبارات اندیس فیلد برای محدود کردن دامنه جستجو. برای جزئیات به بخش FIELD INDEX EXPRESSION مراجعه کنید. هنگامی که از این گزینه به همراه --with-nth استفاده میکنید، عبارات اندیس فیلد روی خطوط دگرگونشده محاسبه میشوند (برخلاف --preview که فیلدها از خطوط اصلی استخراج میشوند)، زیرا fzf اجازه جستجو در فیلدهای پنهان را نمیدهد.
- --with-nth=N[,..] or TEMPLATE
- دگرگون کردن نحوه نمایش هر خط با استفاده از عبارات اندیس فیلد. برای دگرگونسازی پیشرفته، میتوانید الگویی شامل عبارات اندیس فیلد در داخل آکولاد مشخص کنید. هنگامی که از یک الگو استفاده میکنید، جداکننده انتهایی از هر عبارت حذف میشود که کنترل بیشتری روی خروجی به شما میدهد. مقدار {n} در الگو به اندیس ترتیبی خط بر پایه صفر ارزیابی میشود.
# عبارت تکی: حذف فیلد اول
echo foo bar baz | fzf --with-nth 2..
# استفاده از
الگو برای
بازآرایی
فیلدها
echo foo,bar,baz | fzf --delimiter , --with-nth '{n},{1},{3},{2},{1..2}'
عملیات change-with-nth تنها زمانی در دسترس است که --with-nth تنظیم شده باشد. زمانی که --with-nth استفاده میشود، fzf خطوط ورودی اصلی را در حافظه نگه میدارد تا بتوان آنها را در حین کار مجدداً دگرگون کرد (مانند --with-nth .. برای حفظ نحوه نمایش اصلی). این کار مصرف حافظه را افزایش میدهد، بنابراین تنها در صورتی از --with-nth استفاده کنید که واقعاً به دگرگونسازی فیلد نیاز داشته باشید.
- --accept-nth=N[,..] or TEMPLATE
- تعیین فیلدهایی که هنگام پذیرش (Accept) باید چاپ شوند. آخرین جداکننده از خروجی حذف میشود. برای دگرگونسازی پیشرفته، میتوانید الگویی شامل عبارات اندیس فیلد در داخل آکولاد مشخص کنید. زمانی که از الگو استفاده میکنید، جداکننده انتهایی از هر عبارت حذف میشود که کنترل بیشتری بر خروجی فراهم میسازد. مقدار {n} در الگو به اندیس ترتیبی خط بر پایه صفر ارزیابی میشود.
# عبارت تکی
echo foo bar baz | fzf --accept-nth 2
# الگو
echo foo bar baz | fzf --accept-nth 'Index: {n}, 1st: {1}, 2nd: {2}, 3rd:
{3}'
- +s, --no-sort
- عدم مرتبسازی نتایج
- -d, --delimiter=STR
- عبارت منظم (Regex) جداکننده فیلد برای --nth ، --with-nth و عبارات اندیس فیلد (پیشفرض: سبک AWK).
- --tail=NUM
- حداکثر تعداد آیتمهایی که در حافظه نگهداری میشوند. این گزینه زمانی مفید است که میخواهید جریانی بیپایان از دادهها (مانند جریان گزارشهای لاگ) را با fzf مرور کنید و در عین حال مصرف حافظه را محدود نگهدارید.
# فیلتر کردن تعاملی جریان گزارشهای لاگ
tail -f *.log | fzf --tail 100000 --tac --no-sort --exact
- --disabled
- عدم انجام جستجو. با این گزینه، fzf به جای یک «جستجوگر فازی» به یک واسط انتخابگر ساده تبدیل میشود. بعداً میتوانید با استفاده از عملیات enable-search یا toggle-search جستجو را فعال کنید.
- --tiebreak=CRI[,..]
- فهرست
جداشده با
کاما از
معیارهای
مرتبسازی
که در هنگام
برابر شدن
امتیازها
اعمال
میشوند.
length اولویت به خط با طول کوتاهتر
chunk اولویت به خط با بخش تطبیقیافته کوتاهتر (جداشده با فاصلهها)
pathname اولویت به خط با زیررشته تطبیقیافته در نام فایلِ مسیر
begin اولویت به خط با زیررشته تطبیقیافته نزدیکتر به ابتدا
end اولویت به خط با زیررشته تطبیقیافته نزدیکتر به انتها
index اولویت به خطی که زودتر در جریان ورودی ظاهر شده است- هر معیار فقط باید یک بار در فهرست ظاهر شود
- مقدار index تنها در انتهای فهرست مجاز است
- در صورت مشخص نشدن، index به صورت ضمنی به انتهای فهرست افزوده میشود
- پیشفرض length است (یا به طور معادل length,index)
- اگر end در فهرست باشد، fzf هر خط را از انتها به ابتدا جستجو میکند
ورودی/خروجی (INPUT/OUTPUT)
- --read0
- خواندن ورودی جداشده با کاراکترهای اسکی NUL به جای کاراکترهای خط جدید
- --print0
- چاپ خروجی جداشده با کاراکترهای اسکی NUL به جای کاراکترهای خط جدید
- --ansi
- فعالسازی پردازش کدهای رنگی ANSI
- --sync
- جستجوی همگام (Synchronous) برای فیلترسازی چندمرحلهای. در صورت تعیین این گزینه، fzf جستجوگر را تنها پس از تکمیل جریان ورودی، فیلتر اولیه و اتمام تمام عملیاتهای مرتبط (متصل به هر یک از start ، load ، result ، result-final یا focus ) راهاندازی میکند.
fzf --multi | fzf --sync
# ابزار fzf
وضعیتهای
میانی را
رندر
نمیکند
(sleep 1; seq 1000000; sleep 1) |
fzf --sync --query 5 --listen --bind
start:up,load:up,result:up,focus:change-header:Ready
- --no-tty-default
- جستجوی دستگاه TTY فعلی از طریق خطای استاندارد (stderr) به جای پیشفرض قرار دادن /dev/tty . این گزینه از بروز مشکل هنگام اجرای emacsclient از درون fzf جلوگیری میکند. همچنین میتوانید دستگاه TTY پیشفرض را با تنظیم --tty-default=DEVICE_NAME تغییر دهید.
سبک سراسری (GLOBAL STYLE)
- --style=PRESET
- اعمال یک پیشتنظیم سبک [default|minimal|full[:BORDER_STYLE]]
- --color=[BASE_SCHEME][,COLOR_NAME[:ANSI_COLOR][:ANSI_ATTRIBUTES]]...
- پیکربندی رنگها. نام طرح رنگی پایه با نگاشتهای رنگی سفارشی دنبال میشود. هر ورودی با کاما و/یا فاصلهها از هم جدا میشود.
(پیشفرض: dark در ترمینال با ۲۵۶ رنگ، در غیر این صورت base16؛ اگر NO_COLOR تنظیم شده باشد، bw)
dark طرح رنگی
برای
ترمینال
تیره
light طرح رنگی
برای
ترمینال
روشن
base16 طرح رنگی
با استفاده
از ۱۶ رنگ
پایه (نام
مستعار: 16)
bw بدون رنگ
(معادل --no-color)
نام
رنگها (COLOR NAMES):
fg متن
list-fg متن در
بخش فهرست
selected-fg متن خط
انتخابشده
preview-fg متن
پنجره
پیشنمایش
bg پسزمینه
list-bg
پسزمینه
بخش فهرست
selected-bg
پسزمینه
خط
انتخابشده
preview-bg
پسزمینه
پنجره
پیشنمایش
input-bg
پسزمینه
پنجره
ورودی
header-bg
پسزمینه
پنجره
سربرگ
footer-bg
پسزمینه
پنجره
پابرگ
hl
زیررشتههای
برجستهشده
selected-hl
زیررشتههای
برجستهشده
در خط
انتخابشده
current-fg (fg+) متن (خط
فعلی)
current-bg (bg+)
پسزمینه
(خط فعلی)
gutter حاشیه در
سمت چپ (Gutter)
current-hl (hl+)
زیررشتههای
برجستهشده
(خط فعلی)
alt-bg رنگ
پسزمینه
متناوب
برای ایجاد
خطوط
راهراه
alt-gutter رنگ
حاشیه
متناوب
برای ایجاد
الگوی
راهراه
query (input-fg) رشته
عبارت
جستجو (Query)
ghost متن
کمرنگ
پیشنمایش
(--ghost، به صورت
پیشفرض dim
اعمال
میشود)
disabled رشته
جستجو
هنگام
غیرفعال
بودن
قابلیت
جستجو (--disabled)
info خط
اطلاعات
(شمارندههای
تطابق)
border کادر دور
پنجره (--border و
--preview)
list-border کادر دور
بخش فهرست
(--list-border)
scrollbar نوار
اسکرول
separator
جداکننده
افقی در خط
اطلاعات
gap-line خط افقی
روی هر
فاصله (Gap)
preview-border کادر
دور پنجره
پیشنمایش
(--preview)
preview-scrollbar نوار
اسکرول
پیشنمایش
input-border کادر دور
پنجره
ورودی (--input-border)
header-border کادر
دور پنجره
سربرگ (--header-border)
footer-border کادر
دور پنجره
پابرگ (--footer-border)
label برچسب
کادر (--border-label،
--list-label، --input-label و
--preview-label)
list-label برچسب
کادر بخش
فهرست (--list-label)
preview-label برچسب
کادر پنجره
پیشنمایش
(--preview-label)
input-label برچسب
کادر پنجره
ورودی (--input-label)
header-label برچسب
کادر پنجره
سربرگ (--header-label)
footer-label برچسب
کادر پنجره
پابرگ (--footer-label)
prompt اعلان خط
فرمان (Prompt)
pointer نشانگر
خط فعلی
marker نشانگر
انتخاب
چندگانه
spinner نشانگر
چرخان
جریان
ورودی داده
(Spinner)
header (header-fg) سربرگ
footer (footer-fg) پابرگ
nth بخشهایی
از خط که با
--nth مشخص
شدهاند
(تنها از
ویژگیها
پشتیبانی
میکند)
nomatch
آیتمهای
منطبقنشده
در حالت خام
(پیشفرض: dim)
رنگهای
انسی (ANSI COLORS):
-1 رنگ
پیشفرض
پیشزمینه/پسزمینه
ترمینال
(یا رنگ
اصلی متن)
0 ~ 15 ۱۶ رنگ
پایه
black
red
green
yellow
blue
magenta
cyan
white
bright-black (gray | grey)
bright-red
bright-green
bright-yellow
bright-blue
bright-magenta
bright-cyan
bright-white
16 ~ 255 ۲۵۶ رنگ ANSI
#rrggbb رنگهای
۲۴ بیتی
ویژگیهای
انسی (ANSI ATTRIBUTES):
(تنها برای
رنگهای
پیشزمینه
اعمال
میشود)
regular پاک کردن
ویژگیهای
قبلاً
تنظیمشده؛
باید قبل از
سایر موارد
بیاید
strip حذف
رنگها
bold
underline
underline-double
underline-curly
underline-dotted
underline-dashed
reverse
dim
italic
strikethrough
مثالها (EXAMPLES):
# پوسته Seoul256 با
رنگهای ۸
بیتی
# (https://github.com/junegunn/seoul256.vim)
fzf --color='bg:237,bg+:236,info:143,border:240,spinner:108' \
--color='hl:65,fg:252,header:65,fg+:252' \
--color='pointer:161,marker:168,prompt:110,hl+:108'
# پوسته Seoul256 با
رنگهای ۲۴
بیتی
fzf
--color='bg:#4B4B4B,bg+:#3F3F3F,info:#BDBB72,border:#6B6B6B,spinner:#98BC99'
\
--color='hl:#719872,fg:#D9D9D9,header:#719872,fg+:#D9D9D9' \
--color='pointer:#E12672,marker:#E17899,prompt:#98BEDE,hl+:#98BC99'
# پوسته روشن
Seoul256 با
رنگهای ۲۴
بیتی، هر
ورودی با
فاصله جدا
شده است
fzf --style full --color='
fg:#616161 fg+:#616161
bg:#ffffff bg+:#e9e9e9 alt-bg:#f1f1f1
hl:#719872 hl+:#719899
pointer:#e12672 marker:#e17899
header:#719872
spinner:#719899 info:#727100
prompt:#0099bd query:#616161
border:#e1e1e1
'
- --no-color
- غیرفعال کردن رنگها
- --no-bold
- عدم استفاده از متن پررنگ (Bold)
- --black
- استفاده از پسزمینه مشکی
حالت نمایش (DISPLAY MODE)
- --height=[~][-]HEIGHT[%]
- نمایش پنجره fzf در زیر مکاننما با ارتفاع دادهشده به جای استفاده از کل صفحه.
اگر یک مقدار منفی مشخص شود، ارتفاع برابر با ارتفاع ترمینال منهای مقدار دادهشده محاسبه میشود.
fzf --height=-1
هنگامی که پیشوند ~ به آن افزوده شود، fzf به صورت خودکار ارتفاع را در این محدوده با توجه به حجم ورودی تعیین میکند. میتوانید ~ را با یک مقدار منفی ترکیب کنید.
# تمام ۱۰۰٪ صفحه را اشغال نخواهد کرد seq 5 | fzf --height=~100% # هماهنگ با اندازه ورودی، حداکثر تا ارتفاع ترمینال منهای ۱ seq 5 | fzf --height=~-1
ارتفاع
انطباقی
دارای
محدودیتهای
زیر است:
* نمیتوان
آن را همراه
با حاشیه
بیرونی (margin) و
فاصلهگذاری
درونی (padding)
بالا/پایین
که بر حسب
درصد مشخص
شدهاند به
کار برد
* زمانی که
آیتمهای
چندخطی
وجود داشته
باشند
اندازه
مناسب را
پیدا
نمیکند
- --min-height=HEIGHT[+]
- حداقل ارتفاع زمانی که --height به صورت درصد داده شده باشد. علامت + را اضافه کنید تا این مقدار با توجه به سایر گزینههای چیدمان به طور خودکار افزایش یابد، به گونهای که تعداد آیتمهای مشخصشده در بخش فهرست قابل مشاهده باشند (پیشفرض: 10+ ). اگر --height مشخص نشده باشد یا به صورت یک مقدار مطلق تعیین شده باشد، نادیده گرفته میشود.
- --popup[=[center|top|bottom|left|right][,SIZE[%]][,SIZE[%]][,border-native]]
- اجرای fzf در یک قاب شناور tmux یا Zellij (پیشفرض center,50% ). نیازمند tmux نسخه 3.3 به بالا یا Zellij نسخه 0.44 به بالا است. اگر fzf درون tmux یا Zellij اجرا نشود، این گزینه نادیده گرفته میشود. گزینه --tmux یک نام مستعار برای این گزینه است.
در tmux نسخه 3.7 یا بالاتر و در Zellij، قاب شناور غیرمودال (non-modal) است؛ میتوانید در هنگام اجرای fzf به سایر قابها و پنجرهها جابهجا شوید، و قاب را با ماوس جابهجا کرده و اندازه آن را تغییر دهید. کادر پیشفرضِ خود قاب به عنوان دستگیره جابهجایی و تغییر اندازه آن عمل میکند، بنابراین به طور پیشفرض استفاده میشود و border-native به صورت ضمنی در نظر گرفته میشود. مقدار --border-label روی کادر پیشفرض نمایش داده میشود، و عملیاتهای change-border-label و transform-border-label آن را بهروزرسانی میکنند (گزینه --border-label-pos نادیده گرفته میشود). در tmux، ابزار fzf برچسب را در گزینه @fzf-border-label قاب نگه میدارد و pane-border-format آن را تنظیم میکند تا آن را بازخوانی نماید، بنابراین در صورت فعال بودن pane-border-status در tmux، برچسب نمایش داده میشود. عنوان قاب دستنخورده باقی میماند. در Zellij، برچسب همان نام قاب است.
هنگامی که سبک کادر با --border به صراحت تعیین شده باشد، fzf کادر خود را رسم میکند تا تنها کادری باشد که نمایش داده میشود. مقادیر none و line به عنوان بدون کادر در نظر گرفته میشوند. برای حفظ کادر پیشفرض قاب در هر حال، مقدار border-native را وارد کنید. در tmux، کادر رسمشده توسط fzf در یک پاپآپ مودال نشان داده میشود، زیرا کادر پیشفرض یک قاب شناور tmux را نمیتوان حذف کرد؛ این موضوع برای نسخههای tmux پایینتر از 3.7 نیز صدق میکند.
# پاپآپ در مرکز با عرض و ارتفاع ۷۰٪
fzf --popup 70%
# پاپآپ در
سمت راست با
عرض ۴۰٪ و
ارتفاع
۱۰۰٪
fzf --popup right,40%
# پاپآپ در
پایین با
عرض ۱۰۰٪ و
ارتفاع ۳۰٪
fzf --popup bottom,30%
# پاپآپ در
بالا با عرض
۸۰٪ و
ارتفاع ۴۰٪
fzf --popup top,80%,40%
# پاپآپ با
کادر
پیشفرض tmux
یا Zellij در مرکز
با عرض و
ارتفاع ۸۰٪
fzf --popup center,80%,border-native
چیدمان (LAYOUT)
- --layout=LAYOUT
- انتخاب نوع
چیدمان
(پیشفرض: default)
default نمایش از پایین صفحه
reverse نمایش از بالای صفحه
reverse-list نمایش از بالای صفحه، اعلان در پایین - --reverse
- یک مترادف برای --layout=reverse
- --margin=MARGIN
- عبارت جداشده با کاما برای حاشیههای بیرونی (Margins) در اطراف پنجره جستجوگر.
TB,RL حاشیه عمودی، افقی
T,RL,B حاشیه بالا، افقی، پایین
T,R,B,L حاشیه بالا، راست، پایین، چپ
هر بخش میتواند به صورت یک عدد مطلق یا به صورت درصد نسبت به اندازه ترمینال با پسوند % مشخص شود.
مثال:
fzf --margin 10%
fzf --margin 1,5%
- --padding=PADDING
- عبارتی
جداشده با
کاما برای
فاصلهگذاری
درونی (padding) در
داخل کادر
حاشیه.
فاصلهگذاری
درونی تنها
زمانی از
حاشیه
بیرونی (margin)
قابل تشخیص
است که
گزینه --border به
کار رفته
باشد.
مثال:
fzf --margin 5% --padding 5% --border --preview 'cat {}' \
--color bg:#222222,preview-bg:#333333
TB,RL فاصلهگذاری عمودی، افقی
T,RL,B فاصلهگذاری بالا، افقی، پایین
T,R,B,L فاصلهگذاری بالا، راست، پایین، چپ
- --border[=STYLE]
- رسم حاشیه
در اطراف
یابنده
rounded حاشیه با گوشههای گرد (پیشفرض)
sharp حاشیه با گوشههای تیز
bold حاشیه با خطوط توپر
double حاشیه با خطوط دوگانه
dashed حاشیه با خطچین و گوشههای گرد
block حاشیه با استفاده از عناصر بلوکی؛ مناسب هنگام استفاده از رنگهای پسزمینه گوناگون
thinblock حاشیه با استفاده از نمادهای محاسباتی قدیمی؛ ممکن است در برخی ترمینالها نمایش داده نشود
horizontal خطوط افقی در بالا و پایین یابنده
vertical خطوط عمودی در هر دو سمت یابنده
line حاشیه تکخطی (موقعیت به طور خودکار تعیین میشود)
top (up)
bottom (down)
left
right
noneاگر از شبیهساز ترمینالی استفاده میکنید که در آن هر نویسه رسم جعبه ۲ ستون فضا اشغال میکند، تنظیم --ambidouble را امتحان کنید. اگر حاشیه همچنان به درستی رندر نشد، گزینه --no-unicode را تنظیم نمایید.
سبک line هنگامی که گزینه --height به کار رفته باشد، یک خط جداکننده تکی در بالا رسم میکند.
- --border-label[=LABEL]
- برچسبی
برای چاپ
روی خط افقی
حاشیه. باید
همراه با
یکی از
گزینههای
زیر برای --border
به کار رود:
* rounded
* sharp
* bold
* double
* horizontal
* top (up)
* bottom (down)مثال:
# از کدهای رنگی ANSI پشتیبانی میشود
# (همراه با https://github.com/busyloop/lolcat)
label=$(curl -s http://metaphorpsum.com/sentences/1 | lolcat -f)
# برچسب حاشیه در مرکز
fzf --height=10 --border --border-label="╢ $label ╟" --color=label:italic:black
# چپچین (عدد صحیح مثبت)
fzf --height=10 --border --border-label="╢ $label ╟" --border-label-pos=3 --color=label:italic:black
# راستچین (عدد صحیح منفی) روی خط پایین (:bottom)
fzf --height=10 --border --border-label="╢ $label ╟" --border-label-pos=-3:bottom --color=label:italic:black - --border-label-pos[=N[:top|bottom]]
- موقعیت برچسب حاشیه روی خط کادر. یک عدد صحیح مثبت را به عنوان موقعیت ستون از سمت چپ مشخص کنید. برای راستچین کردن برچسب، یک عدد صحیح منفی مشخص نمایید. برچسب به طور پیشفرض روی خط حاشیه بالایی چاپ میشود، برای قرار دادن آن روی خط حاشیه پایینی، :bottom را اضافه کنید. مقدار پیشفرض 0 (یا center) برچسب را در مرکز خط حاشیه قرار میدهد.
بخش فهرست (LIST SECTION)
- -m, --multi[=MAX]
- فعالسازی انتخاب چندگانه با tab/shift-tab. این گزینه به طور اختیاری یک آرگومان عددی صحیح میپذیرد که حداکثر تعداد موارد قابل انتخاب را مشخص میکند.
- +m, --no-multi
- غیرفعالسازی انتخاب چندگانه
- --highlight-line
- برجستهسازی کل سطر جاری
- --cycle
- فعالسازی پیمایش چرخهای
- --wrap[=MODE]
- فعالسازی شکستن سطرها. MODE میتواند char (پیشفرض) یا word باشد. حالت word سطرها را در مرز کلمات (فاصلهها و تبها) میشکند به جای آن که در موقعیتهای کاراکتری دلخواه بشکند. گزینه --wrap-word مترادفی برای --wrap=word است.
- --wrap-sign=INDICATOR
- نشانگر سطرهای شکسته شده. مقدار پیشفرض بسته به --no-unicode برابر '↳ ' یا '> ' است.
- --no-multi-line
- غیرفعالسازی نمایش چندخطی موارد هنگام استفاده از --read0
- --raw
- فعالسازی حالت خام که در آن مواردی که مطابقت ندارند نیز با رنگی کمرنگ نمایش داده میشوند.
- --track
- باعث
میشود fzf
هنگام
بهروزرسانی
فهرست
نتایج،
مورد
انتخابشده
فعلی را
دنبال کند.
این قابلیت
میتواند
هنگام مرور
لاگها با
استفاده از
fzf در حالتی
که
مرتبسازی
غیرفعال
است مفید
باشد.
استفاده از
این گزینه
همراه با --tac
توصیه
نمیشود
زیرا رفتار
حاصل
میتواند
گیجکننده
باشد.
هنگامی که --id-nth نیز تنظیم شده باشد، fzf ردیابی مبتنی بر فیلد را در میان عملیاتهای reload فعال میکند. برای جزئیات به --id-nth مراجعه کنید.
بدون --id-nth ، گزینه --track از ردیابی مبتنی بر اندیس استفاده میکند که در میان بارگذاریهای مجدد پایدار نمیماند.
# ردیابی مبتنی بر اندیس (در میان بارگذاریهای مجدد پایدار نمیماند)
git log --oneline --graph --color=always | nl |
fzf --ansi --track --no-sort --layout=reverse-list
# ردیابی بر
اساس فیلد
نخست (مانند
نام پاد) در
میان
بارگذاریهای
مجدد
kubectl get pods | fzf --track --id-nth 1 --header-lines=1 \
--bind 'ctrl-r:reload:kubectl get pods'
- --id-nth=N[,..]
- تعریف
فیلدهای
هویتی مورد
برای
عملیاتهای
در طول
بازخوانی
(cross-reload). در صورت
تنظیم، fzf از
فیلدهای
مشخصشده
برای
شناسایی
موارد در
طول reload و reload-sync
استفاده
میکند.
همراه با --track ، برنامه fzf کلید ردیابی را از مورد جاری با استفاده از عبارت nth استخراج کرده و به دنبال مورد منطبق در فهرست بازخوانیشده میگردد. در حین جستجو، رابط کاربری قفل میشود (ورودی پرسوجو و حرکت مکاننما غیرفعال شده و اعلان ورودی کمرنگ میشود). با reload ، حالت قفل به محض یافتن مورد منطبق در جریان داده برطرف میشود. با reload-sync ، حالت قفل تا زمان تکمیل کل جریان داده ادامه مییابد. فشردن Escape یا Ctrl-C حالت قفل را بدون خروج از fzf لغو میکند.
خط اطلاعات در حین پیشرفت جستجو، عبارت +T* (یا +t* برای ردیابی یکباره) را نشان میدهد.
همراه با --multi ، موارد انتخابشده در طول reload-sync با تطبیق فیلدهای هویتی آنها در فهرست بازخوانیشده حفظ میشوند.
# ردیابی و حفظ موارد انتخابشده بر اساس نام پاد در میان بازخوانیها
kubectl get pods | fzf --multi --track --id-nth 1 --header-lines=1 \
--bind 'ctrl-r:reload-sync:kubectl get pods'
- --tac
- معکوس کردن ترتیب ورودی
history | fzf --tac --no-sort
- --gap[=N]
- رسم سطرهای خالی بین هر مورد
- --gap-line[=STR]
- رشته دادهشده برای رسم خط افقی در هر فاصله تکرار خواهد شد (پیشفرض: '┈' یا '-' بسته به --no-unicode).
- --freeze-left=N
- تعداد فیلدهایی که باید در سمت چپ ثابت شوند.
- --freeze-right=N
- تعداد فیلدهایی که باید در سمت راست ثابت شوند.
- --keep-right
- نمایان نگه داشتن انتهای سمت راست سطر هنگامی که بیش از حد طولانی است. تنها زمانی موثر است که رشته پرسوجو خالی باشد. در صورتی که میخواهید فیلد آخر حتی با وجود پرسوجوی غیرخالی همواره نمایان باشد، به جای آن از --freeze-right=1 استفاده کنید.
- --scroll-off=LINES
- تعداد سطرهای صفحه نمایش که هنگام پیمایش به بالا یا پایین، در بالا یا پایین حفظ میشوند (پیشفرض: ۳).
- --no-hscroll
- غیرفعالسازی پیمایش افقی
- --hscroll-off=COLS
- تعداد ستونهای صفحه نمایش برای حفظ در سمت راست زیررشته برجسته شده (پیشفرض: ۱۰). تنظیم آن روی یک مقدار بزرگ باعث میشود متن در مرکز صفحه قرار گیرد.
- --jump-labels=CHARS
- کاراکترهای برچسب برای حالت jump
- --gutter=CHAR
- نویسه مورد استفاده برای ستون ناودان حاشیه (gutter) (پیشفرض: '▌' مگر اینکه --no-unicode داده شده باشد)
- --gutter-raw=CHAR
- نویسه مورد استفاده برای ستون ناودان حاشیه در حالت خام (پیشفرض: '▖' مگر اینکه --no-unicode داده شده باشد)
- --pointer=STR
- اشارهگر به سطر جاری (پیشفرض: '▌' یا '>' بسته به --no-unicode)
- --marker=STR
- نشانگر انتخاب چندگانه (پیشفرض: '┃' یا '>' بسته به --no-unicode)
- --marker-multi-line=STR
- نشانگر انتخاب چندگانه برای ورودیهای چندسطری؛ ۳ عنصر برای بالا، میانه و پایین (پیشفرض: '╻┃╹' یا '.|´' بسته به --no-unicode).
- --ellipsis=STR
- علامت حذف برای نمایش هنگام بریده شدن سطر (پیشفرض: '··')
- --tabstop=SPACES
- تعداد فاصلهها برای یک نویسه تب (پیشفرض: ۸)
- --scrollbar=CHAR1[CHAR2]
- استفاده از نویسه دادهشده برای رسم نوار پیمایش (پیشفرض: '│' یا ':' بسته به --no-unicode ). نویسه اختیاری CHAR2 برای رسم نوار پیمایش پنجره پیشنمایش به کار میرود.
- --no-scrollbar
- عدم نمایش نوار پیمایش. مترادفی برای --scrollbar=''
- --list-border[=STYLE]
- رسم حاشیه در اطراف بخش فهرست. سبک line برای این حاشیه پشتیبانی نمیشود.
- --list-label[=LABEL]
- برچسب برای چاپ روی حاشیه فهرست
- --list-label-pos[=N[:top|bottom]]
- موقعیت برچسب فهرست
بخش ورودی (INPUT SECTION)
- --no-input
- غیرفعالسازی و پنهان کردن بخش ورودی. در این حالت دیگر نمیتوانید پرسوجو تایپ کنید. برای راهاندازی جستجو، از کنش search استفاده کنید. بعداً میتوانید بخش ورودی را با استفاده از کنشهای show-input یا toggle-input نمایش دهید، و دوباره آن را با hide-input یا toggle-input پنهان کنید.
- --prompt=STR
- اعلان ورودی (پیشفرض: '> ')
- --info=STYLE
- تعیین سبک
نمایش
اطلاعات
یابنده
(مانند
شمارنده
تطابقها،
نشانگر
بارگذاری و
غیره).
default در انتهای سمت چپ جداکننده افقی
right در انتهای سمت راست جداکننده افقی
hidden عدم نمایش اطلاعات یابنده
inline پس از اعلان با پیشوند پیشفرض ' < '
inline:PREFIX پس از اعلان با یک پیشوند سفارشی
inline-right در انتهای سمت راست سطر اعلان
inline-right:PREFIX در انتهای سمت راست سطر اعلان با یک پیشوند سفارشی - --info-command=COMMAND
- دستور برای
تولید سطر
اطلاعات
یابنده. این
دستور به
صورت همگام
اجرا شده و
رابط
کاربری را
تا زمان
پایان
مسدود
میکند،
بنابراین
مطمئن شوید
که سریع
است. از
کدهای رنگی
ANSI پشتیبانی
میشود.
متغیر $FZF_INFO
روی متن
اصلی
اطلاعات
تنظیم شده
است. برای
مشاهده
متغیرهای
محیطی
دیگری که در
دسترس این
دستور قرار
دارند، به
بخش ENVIRONMENT VARIABLES EXPORTED TO CHILD PROCESSES
مراجعه
کنید.
مثال:
# افزودن موقعیت فعلی مکاننما به ابتدای سطر با رنگ زرد
fzf --info-command='printf "\x1b[33;1m$FZF_POS\x1b[m/$FZF_INFO 💛"' - --no-info
- مترادفی برای --info=hidden
- --separator=STR
- رشته
دادهشده
برای تشکیل
جداکننده
افقی در سطر
اطلاعات
تکرار
خواهد شد
(پیشفرض: '─'
یا '-' بسته به
--no-unicode ).
مگر اینکه صراحتاً مشخص شده باشد، اگر بخش ورودی پیشاپیش توسط یک خط حاشیه از بخش فهرست به صورت بصری جدا شده باشد (مثلاً --input-border یا --header-border )، جداکننده نمایش داده نخواهد شد.
از کدهای رنگی ANSI پشتیبانی میشود.
- --no-separator
- عدم نمایش جداکننده افقی در سطر اطلاعات. مترادفی برای --separator=''
- --ghost=TEXT
- متن شبح (ghost text) برای نمایش در زمانی که ورودی خالی است
- --filepath-word
- باعث
میشود
حرکتها و
کنشهای
کلمهبهکلمه
جداکنندههای
مسیر را
رعایت کنند.
کنشهای
زیر تحت
تاثیر قرار
میگیرند:
backward-kill-word
backward-word
forward-word
kill-word - --input-border[=STYLE]
- رسم حاشیه در اطراف بخش ورودی. سبک line یک خط جداکننده تکی میان بخش ورودی و بخش فهرست رسم میکند.
- --input-label[=LABEL]
- برچسب برای چاپ روی حاشیه ورودی
- --input-label-pos[=N[:top|bottom]]
- موقعیت برچسب ورودی
پنجره پیشنمایش (PREVIEW WINDOW)
- --preview=COMMAND
- اجرای دستور دادهشده برای سطر جاری و نمایش نتیجه در پنجره پیشنمایش. نویسههای {} در دستور، جانگهداری است که با رشته محصور در نقلقول تکی سطر جاری جایگزین میشود. برای تغییر شکل رشته جایگزین، عبارتهای اندیس فیلد را میان آکولادها مشخص کنید (برای جزئیات به FIELD INDEX EXPRESSION مراجعه نمایید).
fzf --preview='head -$LINES {}'
ls -l | fzf --preview="echo user={3} when={-4..-2}; cat {-1}" --header-lines=1
برنامه fzf متغیرهای $FZF_PREVIEW_LINES و $FZF_PREVIEW_COLUMNS را صادر میکند تا اندازه دقیق پنجره پیشنمایش را نشان دهند. (همچنین مقادیر یکسانی را روی $LINES و $COLUMNS بازنویسی میکند اما این مقادیر ممکن است توسط پوسته پیشفرض بازنشانی شوند، بنابراین ترجیحاً به متغیرهایی با پیشوند FZF_PREVIEW_ ارجاع دهید.)
برنامه fzf همچنین متغیرهای $FZF_PREVIEW_TOP و $FZF_PREVIEW_LEFT را صادر میکند تا دستور پیشنمایش بتواند موقعیت پنجره پیشنمایش را تعیین کند.
عبارت جانگهدار که با فلگ + آغاز میشود با فهرستی از موارد انتخابشده (یا مورد جاری در صورت عدم انتخاب) که با فاصله جدا شده و هر کدام جداگانه در نقلقول قرار گرفتهاند جایگزین خواهد شد.
مثال:
fzf --multi --preview='head -10 {+}'
git log --oneline | fzf --multi --preview 'git show {+1}'
به همین ترتیب، عبارت جانگهدار که با فلگ * آغاز میشود با فهرستی از تمام موارد منطبق که با فاصله جدا شده و هر یک جداگانه در نقلقول قرار گرفتهاند جایگزین خواهد شد.
هر عبارت به یک رشته نقلقولشده بسط مییابد، به طوری که ارسال آن به عنوان یک آرگومان به دستور بیرونی ایمن است. بنابراین نباید به صورت دستی دور آکولادها نقلقول اضافه کنید. اما اگر چنین رفتاری را نمیخواهید، میتوانید فلگ r (خام) را در عبارت قرار دهید (مانند {r} ، {r1} و غیره). با احتیاط از آن استفاده کنید زیرا خروجی بدون نقلقول میتواند به خرابی دستورات منجر شود.
هنگام استفاده از عبارت اندیس فیلد، فاصلههای خالی ابتدا و انتها از رشته جایگزین حذف میشوند. برای حفظ فاصلههای خالی، از فلگ s استفاده کنید.
عبارت جانگهدار با فلگ f با مسیر یک فایل موقت که فهرست ارزیابیشده را نگه میدارد جایگزین میشود. این ویژگی زمانی مفید است که تعداد زیادی مورد ارسال میکنید و طول رشته ارزیابیشده ممکن است از ARG_MAX بیشتر شود.
مثال:
# مشاهده
مجموع تمام
اعداد
منطبق
# این دستور
به دلیل
محدودیت ARG_MAX
بدون فلگ 'f'
به درستی
کار نخواهد
کرد.
seq 100000 | fzf --preview "awk '{sum+=\$1} END {print sum}'
{*f}"
# استفاده
از {+f} برای
دریافت
موارد
انتخابشده
به عنوان
فهرستی
جداشده با
سطر
seq 100 | fzf --multi --bind 'enter:become:cat {+f}'
همچنین:
* {q} با رشته
پرسوجوی
جاری
جایگزین
میشود.
* {q} میتواند
شامل
عبارتهای
اندیس فیلد
باشد؛
مانند {q:1} ،
{q:2..} و غیره.
* {n} با اندیس
ترتیبی
صفر-پایه
مورد جاری
جایگزین
میشود. اگر
هنگام
انتخاب چند
سطر، شماره
اندیس همه
موارد را
میخواهید،
از {+n}
استفاده
کنید.
توجه داشته باشید که با قرار دادن یک بکاسلش در ابتدا میتوانید الگوی جانگهدار را اسکیپ کنید.
پنجره پیشنمایش حتی زمانی که هیچ تطابقی برای پرسوجوی جاری وجود نداشته باشد، در صورتی که هر یک از عبارتهای جانگهدار به یک رشته غیرخالی ارزیابی شوند یا {q} در الگوی دستور موجود باشد، بهروزرسانی خواهد شد.
از نگارش 0.24.0 به بعد، fzf میتواند محتوای پیشنمایش جزئی را پیش از اتمام کامل دستور پیشنمایش رندر کند. توالی فرار ANSI برای پاک کردن صفحه نمایش (CSI 2 J) پشتیبانی میشود، بنابراین میتوانید از آن برای پیادهسازی پنجره پیشنمایشی که به طور مداوم بهروزرسانی میشود استفاده کنید.
مثال:
fzf --preview 'for i in $(seq 100000); do
(( i % 200 == 0 )) && printf "\033[2J"
echo "$i"
sleep 0.01
done'
برنامه fzf دارای پشتیبانی آزمایشی از پروتکل گرافیکی Kitty و گرافیک Sixel است. مثال زیر از اسکریپت https://github.com/junegunn/fzf/blob/master/bin/fzf-preview.sh برای رندر یک تصویر با استفاده از هر یک از این پروتکلها در داخل پنجره پیشنمایش استفاده میکند.
مثال:
fzf --preview='fzf-preview.sh {}'
- --preview-border[=STYLE]
- کوتاهشده --preview-window=border-STYLE line یک خط جداکننده تکی میان پنجره پیشنمایش و باقی رابط کاربری رسم میکند.
- --preview-label[=LABEL]
- برچسبی
برای چاپ
روی خط افقی
حاشیه
پنجره
پیشنمایش.
باید همراه
با یکی از
گزینههای
زیر برای
--preview-window
استفاده
شود:
* border-rounded (پیشفرض در پلتفرمهای غیر ویندوز)
* border-sharp (پیشفرض در ویندوز)
* border-bold
* border-double
* border-dashed
* border-block
* border-thinblock
* border-horizontal
* border-top
* border-bottom - --preview-wrap-sign=INDICATOR
- نشانگر سطرهای شکسته شده در پنجره پیشنمایش. در صورت عدم تعیین، از مقدار --wrap-sign استفاده میشود.
- --preview-label-pos[=N[:top|bottom]]
- موقعیت برچسب حاشیه روی خط کادر پنجره پیشنمایش. یک عدد صحیح مثبت را به عنوان موقعیت ستون از سمت چپ مشخص کنید. برای راستچین کردن برچسب، یک عدد صحیح منفی مشخص نمایید. برچسب به طور پیشفرض روی خط حاشیه بالایی چاپ میشود، برای قرار دادن آن روی خط حاشیه پایینی، :bottom را اضافه کنید. مقدار پیشفرض 0 (یا center) برچسب را در مرکز خط حاشیه قرار میدهد.
- --preview-window=[POSITION][,SIZE[%]][,border-STYLE][,[no]wrap][,wrap-word][,[no]follow][,[no]cycle][,[no]info][,[no]hidden][,+SCROLL[OFFSETS][/DENOM]][,~HEADER_LINES][,default][,<SIZE_THRESHOLD(ALTERNATIVE_LAYOUT)]
up
down
left
right
next
طرحبندی پنجره پیشنمایش را تعیین میکند.
* next پنجره پیشنمایش را در مجاورت بخش ورودی و در سمت فهرست قرار میدهد: در طرحبندی پیشفرض بالای ورودی، و در --layout=reverse زیر ورودی.
* اگر آرگومان حاوی :hidden باشد، پنجره پیشنمایش به صورت پیشفرض پنهان خواهد بود تا زمانی که کنش toggle-preview فراخوانی شود.
* اگر اندازه برابر 0 تعیین شود، پنجره پیشنمایش نمایان نخواهد بود، اما fzf همچنان دستور را در پسزمینه اجرا میکند.
* سطرهای طولانی به طور پیشفرض بریده میشوند. شکستن سطرها را میتوان با فلگ wrap فعال کرد. فلگ wrap-word شکستن در سطح کلمه را فعال میکند که سطرها را در مرزهای کلمات به جای میانه کلمه میشکند.
* وقتی فلگ follow تنظیم شده باشد، پنجره پیشنمایش به طور خودکار به پایین پیمایش میشود، مشابه نحوه کارکرد tail -f
fzf --preview-window follow --preview 'for i in $(seq 100000); do
echo "$i"
sleep 0.01
(( i % 300 == 0 )) && printf "\033[2J"
done'
* پیمایش چرخهای با فلگ cycle فعال میشود.
* برای پنهان کردن اطلاعات آفست پیمایش در گوشه بالا سمت راست، noinfo را مشخص کنید.
* برای تغییر سبک حاشیه پنجره پیشنمایش، یکی از گزینههای --border را با پیشوند border- مشخص نمایید؛ مانند border-rounded (حاشیه با گوشههای گرد، پیشفرض)، border-sharp (حاشیه با گوشههای تیز)، border-left ، border-none و غیره.
* علاوه بر سایر سبکهای حاشیه، سبک border-line نیز پشتیبانی میشود که یک خط جداکننده تکی میان پنجره پیشنمایش و باقی رابط کاربری رسم میکند.
* [:+SCROLL[OFFSETS][/DENOM]] آفست پیمایش اولیه پنجره پیشنمایش را تعیین میکند.
- SCROLL
میتواند
یک عدد صحیح
یا یک عبارت
اندیس
تکفیلدی
باشد که به
یک عدد صحیح
ارجاع
میدهد، یا
{n} برای
ارجاع به
اندیس
ترتیبی
صفر-پایه
مورد جاری.
- بخش
اختیاری OFFSETS
برای تنظیم
آفست پایه
است. این بخش
باید به
صورت
مجموعهای
از اعداد
صحیح
علامتدار
(-INTEGER یا +INTEGER)
داده شود.
- بخش پایانی
/DENOM برای
تعیین کسری
از ارتفاع
پنجره
پیشنمایش
است.
* ~HEADER_LINES تعداد N سطر بالایی را به عنوان سرایند ثابت نگه میدارد تا همیشه نمایان باشند.
* default تمام گزینههایی را که پیشتر تنظیم شده بودند به حالت پیشفرض بازمیگرداند.
# موقعیتها و اندازههای غیرپیشفرض پنجره پیشنمایش
fzf --preview="head {}" --preview-window=up,30%
fzf --preview="file {}" --preview-window=down,1
# آفست
پیمایش
اولیه روی
شماره سطر
هر خط از
خروجی git grep
منهای ۵ سطر
(-5) تنظیم شده
است
git grep --line-number '' |
fzf --delimiter : --preview 'nl {1}' --preview-window '+{2}-5'
# پیشنمایش
با bat، سطر
منطبق در
میانه
پنجره و در
زیر سرایند
ثابت ۳ سطری
#
# ~3 ۳ سطر بالا
به عنوان
سرایند
ثابت
# +{2} آفست پایه
پیمایش
استخراجشده
از فیلد دوم
# +3 آفست
اضافی برای
جبران
سرایند ۳
سطری
# /2 قرار دادن
در میانه
ناحیه
پیشنمایش
#
git grep --line-number '' |
fzf --delimiter : \
--preview 'bat --style=full --color=always --highlight-line {2} {1}' \
--preview-window '~3,+{2}+3/2'
# نمایش ۳ سطر
بالایی به
عنوان
سرایند
ثابت
fzf --preview 'bat --style=full --color=always {}' --preview-window '~3'
* میتوانید مجموعهای جایگزین از گزینهها را مشخص کنید که تنها زمانی به کار میروند که اندازه پنجره پیشنمایش کمتر از یک آستانه معین باشد. توجه داشته باشید که تنها یک طرحبندی جایگزین مجاز است.
fzf --preview 'cat {}' --preview-window 'right,border-left,<30(up,30%,border-bottom)'
سرآیند (HEADER)
- --header=STR
- رشته دادهشده به عنوان سرآیند چسبان (sticky header) چاپ خواهد شد. خطوط بدون در نظر گرفتن گزینه --layout به همان ترتیب دادهشده از بالا به پایین نمایش داده میشوند و تحت تأثیر --with-nth قرار نمیگیرند. کدهای رنگی ANSI حتی در صورت تنظیم نبودن --ansi نیز پردازش میشوند.
- --header-lines=N
- تعداد N خط نخست ورودی به عنوان سرآیند چسبان در نظر گرفته میشود. هنگامی که --with-nth تنظیم شده باشد، این خطوط دقیقاً مانند سایر خطوط پس از خود تبدیل و دگرگون میشوند.
- --header-first
- چاپ سرآیند پیش از خط اعلان (prompt). هنگامی که هم سرآیند معمولی و هم خطوط سرآیند (--header-lines) حضور داشته باشند، این گزینه تنها روی سرآیند معمولی اعمال میشود.
- --header-border[=STYLE]
- رسم کادر در اطراف بخش سرآیند. سبک line یک خط جداکننده منفرد بین پنجره سرآیند و بخش فهرست رسم میکند. سبک inline سرآیند را درون قاب کادر فهرست تعبیه میکند که با یک جداکننده افقی به بخش فهرست متصل میشود؛ این سبک نیازمند شکلی از --list-border است که هر دو بخش بالا و پایین را داشته باشد (مانند rounded / sharp / bold / double / dashed / block / thinblock / horizontal) و در غیر این صورت به line تنزل مییابد. هنگامی که کادر فهرست دارای بخشهای جانبی نیز باشد، خط جداکننده با تقاطعهای Tشکل به آنها متصل میشود؛ از آنجا که سبک horizontal فاقد کادرهای کناری است، جداکننده بدون نقاط پایانی تقاطع Tشکل رسم میشود. این گزینه نسبت به --header-first اولویت دارد (بخش درون قاب فهرست باقی میماند)، و هنگامی که --header-lines نیز تنظیم شده باشد، گزینه --header-lines-border نیز باید حتماً inline باشد.
- --header-label[=LABEL]
- برچسبی که روی کادر سرآیند چاپ میشود
- --header-label-pos[=N[:top|bottom]]
- موقعیت برچسب سرآیند
- --header-lines-border[=STYLE]
- نمایش سرآیند حاصل از --header-lines با کادری جداگانه. مقدار none را ارسال کنید تا خطوط سرآیند همچنان تفکیک شوند اما کادری نداشته باشند. برای ادغام دو سرآیند، از --no-header-lines-border استفاده کنید. سبک line یک خط جداکننده منفرد بین خطوط سرآیند و بخش فهرست رسم میکند. سبک inline خطوط سرآیند را با یک جداکننده افقی درون قاب کادر فهرست تعبیه میکند؛ این سبک نیازمند شکلی از --list-border است که هر دو بخش بالا و پایین را داشته باشد، و در غیر این صورت به line تنزل مییابد.
پاورقی (FOOTER)
- رشته دادهشده به عنوان پاورقی چسبان (sticky footer) چاپ خواهد شد. خطوط بدون در نظر گرفتن گزینه --layout به همان ترتیب دادهشده از بالا به پایین نمایش داده میشوند و تحت تأثیر --with-nth قرار نمیگیرند. کدهای رنگی ANSI حتی زمانی که --ansi تنظیم نشده باشد نیز پردازش میشوند.
- رسم کادر در اطراف بخش پاورقی. سبک line یک خط جداکننده منفرد بین پاورقی و بخش فهرست رسم میکند. سبک inline پاورقی را با یک جداکننده افقی درون قاب کادر فهرست جای میدهد؛ این سبک به شکلی از --list-border نیاز دارد که دارای هر دو بخش بالا و پایین باشد و در غیر این صورت به line تنزل پیدا میکند.
- برچسبی که روی کادر پاورقی چاپ میشود
- موقعیت برچسب پاورقی
اسکریپتنویسی (SCRIPTING)
- -q, --query=STR
- شروع یابنده با عبارت پرسوجوی (query) دادهشده
- -1, --select-1
- اگر برای پرسوجوی اولیه (--query) تنها یک تطابق وجود داشته باشد، یابنده تعاملی را آغاز نکن و بهطور خودکار تنها مورد منطبق را انتخاب کن
- -0, --exit-0
- اگر برای پرسوجوی اولیه (--query) هیچ تطابقی وجود نداشته باشد، یابنده تعاملی را آغاز نکن و بلافاصله خارج شو
- -f, --filter=STR
- حالت پالایش (Filter mode). یابنده تعاملی اجرا نمیشود. در صورت استفاده به همراه --no-sort، دستور fzf به یک نسخه فازی از grep تبدیل میشود.
- --print-query
- چاپ پرسوجو به عنوان نخستین خط خروجی
- --expect=KEY[,..]
- فهرستی از کلیدهای جداشده با کاما که میتوان علاوه بر کلید پیشفرض enter، برای تکمیل کار fzf از آنها استفاده کرد. هنگامی که این گزینه تنظیم شود، fzf نام کلید فشردهشده را به عنوان نخستین خط خروجی خود چاپ میکند (یا به عنوان خط دوم اگر --print-query نیز استفاده شده باشد). در صورتی که fzf با کلید پیشفرض enter تکمیل شود، این خط خالی خواهد بود. اگر گزینه --expect چندین بار مشخص شود، fzf اجتماع این کلیدها را در نظر خواهد گرفت. گزینه --no-expect فهرست را پاک میکند.
مثال:
fzf --expect=ctrl-v,ctrl-t,alt-s --expect=f1,f2,~,@
این گزینه با --bind روی همان کلید سازگار نیست و نسبت به آن اولویت خواهد داشت. برای ترکیب این دو، از کنش print استفاده کنید.
مثال:
fzf --multi \
--bind 'enter:print()+accept,ctrl-y:select-all+print(ctrl-y)+accept'
- --no-clear
- هنگام خروج، رابط یابنده پاک نشود. اگر fzf در حالت تمامصفحه اجرا شده باشد، به صفحه اولیه باز نخواهد گشت، بنابراین باید به صورت دستی دستور tput rmcup را برای بازگشت اجرا کنید. از این گزینه میتوان برای جلوگیری از پرش تصویر (flickering) هنگامی که برنامه شما نیاز دارد fzf را چندین بار پشت سر هم اجرا کند استفاده نمود. (توجه داشته باشید که در بیشتر موارد، بهتر است به جای آن از کنش reload استفاده شود.)
مثال:
foo=$(seq 100 | fzf --no-clear) || ( # در صورت انصراف، بازگشت دستی به صفحه اصلی ضروری است tput rmcup exit 1 ) && seq "$foo" 100 | fzf
پیوند کلید/رویداد (KEY/EVENT BINDING)
- --bind=BINDINGS
- فهرستی از پیوندهای سفارشی کلید/رویداد جداشده با کاما. برای جزئیات به بخش پیوندهای کلید/رویداد (KEY/EVENT BINDINGS) مراجعه فرمایید.
پیشرفته (ADVANCED)
- --with-shell=STR
- دستور پوسته و فلگهایی که فرآیندهای فرزند با آنها اجرا میشوند. در سیستمهای شبهیونیکس (*nix)، اگر $SHELL تنظیم شده باشد، مقدار پیشفرض $SHELL -c و در غیر این صورت sh -c است. در ویندوز، اگر $SHELL تنظیم نشده باشد، مقدار پیشفرض cmd /s/c خواهد بود.
- --listen[=SOCKET_PATH|[ADDR:]PORT] --listen-unsafe[=[ADDR:]PORT]
- راهاندازی سرور HTTP و شنود روی آدرس یا سوکت یونیکس مشخصشده. این قابلیت به فرآیندهای خارجی امکان میدهد تا کنشهای مورد نظر را از طریق متد POST ارسال کرده و وضعیت برنامه را از طریق متد GET پرسوجو کنند. برای اینکه آرگومان به عنوان مسیر سوکت شناخته شود، باید پسوند .sock داشته باشد.
- اگر شماره درگاه حذف شود یا برابر 0 داده شود، fzf بهطور خودکار درگاهی را انتخاب کرده و آن را به عنوان متغیر محیطی FZF_PORT به فرآیندهای فرزند صادر (export) میکند.
- اگر مسیر سوکت یونیکس داده شود، fzf یک سوکت دامنه یونیکس در مسیر دادهشده ایجاد میکند. فایل از پیش موجود حذف خواهد شد. مسیر فایل سوکت به عنوان متغیر محیطی FZF_SOCK صادر میشود.
- اگر متغیر محیطی FZF_API_KEY تنظیم شده باشد، سرور نیازمند ارسال یک کلید API با همان مقدار در سرآیند HTTP به نام x-api-key خواهد بود.
- متغیر FZF_API_KEY برای آدرس شنودی به غیر از localhost الزامی است.
- برای مجاز کردن اجرای فرآیند از راه دور، از --listen-unsafe استفاده کنید.
مثال:
# راهاندازی سرور HTTP روی درگاه 6266
fzf --listen 6266
# ارسال کنش به سرور
curl -XPOST localhost:6266 -d 'reload(seq 100)+change-prompt(hundred> )'
# راهاندازی سرور HTTP روی درگاه 6266 با اجازه دسترسی از راه دور
# * شنود روی آدرسی غیر از localhost نیازمند استفاده از کلید API است
export FZF_API_KEY="$(head -c 32 /dev/urandom | base64)"
fzf --listen 0.0.0.0:6266
# ارسال یک کنش احراز هویتشده
curl -XPOST localhost:6266 -H "x-api-key: $FZF_API_KEY" -d 'change-query(yo)'
# انتخاب خودکار درگاه و صادر کردن آن به عنوان $FZF_PORT به فرآیند فرزند
fzf --listen --bind 'start:execute-silent:echo $FZF_PORT > /tmp/fzf-port'
# دریافت وضعیت برنامه در قالب JSON (آزمایشی)
# - پارامترهای GET:
# - limit: تعداد موارد بازگشتی (پیشفرض: 100)
# - offset: تعداد مواردی که باید نادیده گرفته شوند (پیشفرض: 0)
curl localhost:6266
# انتخاب خودکار مواردی با پسوند .txt
fzf --multi --sync --listen --bind 'load:transform:
pos=1
curl -s localhost:$FZF_PORT?limit=1000 | jq -r .matches[].text | while read -r text; do
if [[ $text =~ \.txt$ ]]; then
echo -n "+pos($pos)+select"
fi
pos=$((pos + 1))
done
echo +first
نمونه اسکریپت زیر به جای درگاه TCP از یک سوکت یونیکس استفاده میکند:
fzf --listen=/tmp/fzf.sock # GET curl --unix-socket /tmp/fzf.sock http # POST curl --unix-socket /tmp/fzf.sock http -d up
- --threads=N
- تعداد ریسمانهای تطابقدهنده برای استفاده. مقدار پیشفرض min(8 * NUM_CPU, 32) است.
- --bench=DURATION
- اجرای مکرر --filter برای مدت زمان مشخصشده و چاپ آمارهای زمانی. حتماً باید همراه با --filter به کار رود.
مثال:
cat /usr/share/dict/words | fzf --filter abc --bench 10s
پیمایش دایرکتوری (DIRECTORY TRAVERSAL)
- رفتار پیمایشگر دایرکتوری داخلی را تعیین میکند که هنگام تنظیم نبودن $FZF_DEFAULT_COMMAND استفاده میشود. مقدار پیشفرض file,follow,hidden است.
* file :
گنجاندن
فایلها در
نتیجه
جستجو
* dir : گنجاندن
دایرکتوریها
در نتیجه
جستجو
* hidden : گنجاندن
و دنبال
کردن
دایرکتوریهای
پنهان
* follow : دنبال
کردن
پیوندهای
نمادین
(سیمبلیک
لینکها)
- --walker-root=DIR [...]
- فهرستی از نام دایرکتوریها برای آغاز به کار پیمایشگر دایرکتوری داخلی. مقدار پیشفرض دایرکتوری کاری فعلی است.
- --walker-skip=DIRS
- فهرستی از نام دایرکتوریهای جداشده با کاما جهت نادیدهگرفتن حین پیمایش دایرکتوری. مقدار پیشفرض .git,node_modules است.
تاریخچه (HISTORY)
- --history=HISTORY_FILE
- بارگذاری تاریخچه جستجو از فایل مشخصشده و بهروزرسانی آن فایل در هنگام پایان کار. هنگام فعال بودن، کلیدهای CTRL-N و CTRL-P بهطور خودکار به next-history و prev-history تغییر نگاشت مییابند.
- --history-size=N
- حداکثر تعداد مدخلها در فایل تاریخچه (پیشفرض: 1000). در صورتی که تعداد خطوط از این مقدار فراتر رود، فایل بهطور خودکار کوتاه میشود.
ادغام با پوسته (SHELL INTEGRATION)
- --bash
- چاپ اسکریپت راهاندازی و ادغام با پوسته Bash
مثال: eval "$(fzf --bash)"
- --zsh
- چاپ اسکریپت راهاندازی و ادغام با پوسته Zsh
مثال: source <(fzf --zsh)
- --fish
- چاپ اسکریپت راهاندازی و ادغام با پوسته Fish
مثال: fzf --fish | source
- --nushell
- چاپ اسکریپت راهاندازی و ادغام با پوسته Nushell
مثال: fzf --nushell | save -f ~/.config/nushell/autoload/_fzf_integration.nu
سایر موارد (OTHERS)
- --no-mouse
- غیرفعال کردن موشواره
- --no-unicode
- استفاده از نویسههای ASCII به جای نویسههای ترسیمی یونیکد برای رسم کادرها، نشانگر پیشرفت (spinner) و جداکننده افقی.
- --ambidouble
- در صورتی که شبیهساز ترمینال شما نویسههای با عرض مبهم (مانند نویسههای ترسیم کادر) را در ۲ ستون نمایش میدهد، این گزینه را تنظیم کنید.
راهنما (HELP)
متغیرهای محیطی (ENVIRONMENT VARIABLES)
- FZF_DEFAULT_COMMAND
- دستور پیشفرض برای استفاده زمانی که ورودی یک دستگاه TTY است. در سیستمهای شبهیونیکس (*nix)، اگر SHELL تنظیم شده باشد fzf دستور را با $SHELL -c و در غیر این صورت با sh -c اجرا میکند، بنابراین در این حالت مطمئن شوید که دستور با استاندارد POSIX سازگار است.
- FZF_DEFAULT_OPTS
- گزینههای
پیشفرض.
مثال: export FZF_DEFAULT_OPTS="--layout=reverse --border --cycle" - FZF_DEFAULT_OPTS_FILE
- مسیر فایلی
که شامل
گزینههای
پیشفرض
است.
مثال: export FZF_DEFAULT_OPTS_FILE=~/.fzfrc - FZF_API_KEY
- میتواند برای الزام ورود کلید API هنگام استفاده از گزینه --listen استفاده شود. در صورت تنظیم نبودن، هیچ احراز هویتی توسط سرور الزامی نخواهد بود. اگر نیاز به محافظت در برابر حملات اتصال مجدد DNS (DNS rebinding) و ارتقای دسترسی دارید، میتوانید این مقدار را تنظیم کنید.
وضعیت خروج (EXIT STATUS)
0 خروج
عادی
1 عدم تطابق
2 خطا
126 خطای عدم
دسترسی (Permission denied)
از کنش become
127 دستور
پوسته
نامعتبر
برای کنش become
130
وقفهیافته
با CTRL-C یا ESC
عبارت شاخص فیلد (FIELD INDEX EXPRESSION)
یک عبارت شاخص فیلد میتواند یک عدد صحیح غیر صفر یا یک عبارت محدوده ([BEGIN]..[END]) باشد. گزینههای --nth و --with-nth فهرستی از عبارات شاخص فیلد جداشده با کاما را میپذیرند.
نمونهها (Examples)
1 فیلد اول
2 فیلد دوم
-1 آخرین
فیلد
-2 یکی مانده
به آخرین
فیلد
3..5 از فیلد
سوم تا فیلد
پنجم
2.. از فیلد
دوم تا
آخرین فیلد
..-3 از فیلد
اول تا سومی
مانده به
آخرین فیلد
.. تمامی
فیلدها
متغیرهای محیطی ارسالشده به فرآیندهای فرزند (ENVIRONMENT VARIABLES EXPORTED TO CHILD PROCESSES)
دستور fzf متغیرهای محیطی زیر را به فرآیندهای فرزند خود صادر (export) میکند:
FZF_LINES تعداد
خطوطی که fzf
بدون
احتساب
فاصله
درونی (padding) و
حاشیه (margin)
اشغال
میکند
FZF_COLUMNS تعداد
ستونهایی
که fzf بدون
احتساب
فاصله
درونی و
حاشیه
اشغال
میکند
FZF_DIRECTION جهت
فهرست (up یا
down)
FZF_TOTAL_COUNT تعداد
کل موارد
FZF_MATCH_COUNT تعداد
موارد
مطابقتیافته
FZF_SELECT_COUNT تعداد
موارد
انتخابشده
FZF_POS موقعیت
عمودی
مکاننما
در فهرست با
شروع از ۱
FZF_CURRENT_ITEM متن
مورد جاری
(در صورت
خالی بودن
فهرست،
تنظیم
نمیشود)
FZF_WRAP حالت
شکستن خطوط
(char، word) در صورت
فعال بودن
FZF_QUERY رشته
پرسوجوی
جاری
FZF_INPUT_STATE وضعیت
ورودی جاری
(enabled، disabled، hidden)
FZF_NTH گزینه --nth
جاری
FZF_WITH_NTH گزینه --with-nth
جاری
FZF_PROMPT رشته
اعلان (prompt)
FZF_GHOST رشته
سایه (ghost)
FZF_POINTER رشته
نشانگر (pointer)
FZF_PREVIEW_LABEL رشته
برچسب
پیشنمایش
FZF_BORDER_LABEL رشته
برچسب کادر
FZF_LIST_LABEL رشته
برچسب
فهرست
FZF_INPUT_LABEL رشته
برچسب
ورودی
FZF_HEADER_LABEL رشته
برچسب
سرآیند
FZF_ACTION نام
آخرین کنش
انجامشده
FZF_KEY نام
آخرین کلید
فشردهشده
FZF_IDLE_TIME
ثانیههای
کامل
سپریشده
از آخرین
فعالیت
کاربر
FZF_IDLE_TIME_MS
میلیثانیههای
سپریشده
از آخرین
فعالیت
کاربر
FZF_PORT شماره
درگاه
هنگام
استفاده از
گزینه --listen
FZF_SOCK مسیر
سوکت
یونیکس
هنگام
استفاده از
گزینه --listen
FZF_PREVIEW_TOP موقعیت
بالای
پنجره
پیشنمایش
FZF_PREVIEW_LEFT موقعیت
سمت چپ
پنجره
پیشنمایش
FZF_PREVIEW_LINES تعداد
خطوط در
پنجره
پیشنمایش
FZF_PREVIEW_COLUMNS تعداد
ستونها در
پنجره
پیشنمایش
FZF_RAW تنها در
حالت خام (raw)؛
۱ اگر مورد
جاری
مطابقت
داشته
باشد، در
غیر این
صورت ۰
FZF_CURRENT_ITEM در صورتی که مورد حاوی بایت NUL باشد حذف میشود، زیرا exec(2) نمیتواند آن را منتقل کند. همچنین اگر مورد بزرگتر از ۶۴ کیلوبایت باشد نیز حذف میشود تا یک مورد بسیار بزرگ نتواند از سقف مجاز اندازه متغیرهای محیطی فراتر رفته و موجب اختلال در پیشنمایش و سایر دستورات فرزند شود.
حالت جستجوی گسترده (EXTENDED SEARCH MODE)
مگر در مواردی که غیر از این مشخص شده باشد، fzf در «حالت جستجوی گسترده» شروع به کار خواهد کرد. در این حالت، میتوانید چندین الگو را که با فاصله از هم تفکیک شدهاند مشخص کنید، مانند: 'wild ^music .mp3$ sbtrkt !rmx
میتوانید پیش از کاراکتر فاصله یک بکاسلش قرار دهید ( ) تا دقیقاً با خود کاراکتر فاصله تطابق یابد.
تطابق دقیق - درون کوتیشن (Exact-match)
عبارتی که با یک نویسه نقلقول تکی (') شروع شود، به عنوان یک عبارت «تطابق دقیق» (یا «غیرفازی») تفسیر میشود. دستور fzf دقیقاً به دنبال رخدادهای عینی آن رشته میگردد.
تطابق لنگردار (Anchored-match)
یک عبارت میتواند پیشوند ^ یا پسوند $ داشته باشد تا به یک عبارت تطابق لنگردار تبدیل شود. در این صورت fzf خطوطی را جستجو میکند که با رشته دادهشده شروع شده یا به آن ختم میشوند. یک عبارت تطابق لنگردار، خود یک عبارت تطابق دقیق نیز هست.
تطابق دقیق مرز کلمه - درون کوتیشن دوطرفه (Exact-boundary-match)
عبارتی که در هر دو طرف با کوتیشن تکی احاطه شده باشد، به عنوان یک «تطابق دقیق در مرز کلمه» تفسیر میشود. دستور fzf به دنبال رخدادهای دقیق رشتهای میگردد که هر دو انتهای آن در مرزهای کلمه باشند. برخلاف عبارات منظم (regular expressions)، در اینجا زیرخط (underscore) نیز به عنوان یک مرز کلمه شناخته میشود. اما کلمات پیرامون زیرخط رتبه پایینتری دریافت کرده و در نتایج دیرتر از کلمات پیرامون سایر انواع مرزهای کلمه ظاهر میشوند.
1. xxx foo xxx (بالاترین امتیاز) 2. xxx foo_xxx 3. xxx_foo xxx 4. xxx_foo_xxx (پایینترین امتیاز)
نفی یا استثنا (Negation)
اگر عبارتی با پیشوند ! مشخص شود، fzf خطوطی را که با آن عبارت مطابقت دارند از نتایج مستثنی میکند. در این حالت، fzf بهطور پیشفرض تطابق دقیق را انجام میدهد.
تطابق دقیق بهصورت پیشفرض (Exact-match by default)
اگر تطابق فازی را نمیپسندید و تمایلی ندارید که پیش از هر کلمه کوتیشن بگذارید (پیشوند ')، دستور fzf را با گزینه -e یا --exact آغاز کنید. توجه داشته باشید که با تنظیم گزینه --exact، پیشوند ' حالت تطابق دقیق را از عبارت برمیدارد (unquote میکند).
عملگر OR
یک نویسه خط عمودی (|) منفرد به عنوان عملگر OR عمل میکند. به عنوان مثال، پرسوجوی زیر با مدخلهایی مطابقت دارد که با core شروع شده و به یکی از پسوندهای go، rb یا py ختم شوند.
مثال: ^core go$ | rb$ | py$
پیوندهای کلید/رویداد (KEY/EVENT BINDINGS)
گزینه --bind به شما اجازه میدهد یک کلید یا یک رویداد را به یک یا چند کنش پیوند دهید. میتوانید از آن برای سفارشیسازی کلیدهای میانبر یا پیادهسازی رفتارهای پویا استفاده کنید.
گزینه --bind فهرستی از عبارات پیوند جداشده با کاما را میپذیرد. هر عبارت پیوند به صورت KEY:ACTION یا EVENT:ACTION است. میتوانید با نوشتن فهرستی از کلیدها و رویدادهای جداشده با کاما پیش از دونقطه، کنشها را به چند کلید و رویداد متصل کنید؛ مانند: KEY1,KEY2,EVENT1,EVENT2:ACTION.
مثال:
fzf --bind=ctrl-j:accept,ctrl-k:kill-line # بارگذاری خروجی 'ps -ef' در آغاز کار و بارگذاری مجدد آن با CTRL-R fzf --bind 'start,ctrl-r:reload:ps -ef'
کلیدهای در دسترس: (مترادفها) (AVAILABLE KEYS: SYNONYMS)
ctrl-[a-z]
ctrl-space
ctrl-delete
ctrl-\
ctrl-]
ctrl-^ (ctrl-6)
ctrl-/ (ctrl-_)
ctrl-alt-[a-z] (کلید ctrl-alt-h
در
سیستمهای
غیرویندوز
معادل ctrl-alt-backspace
است)
alt-[*] (هر
تکنویسه
حساس به
بزرگی و
کوچکی حروف
مجاز است)
f[1-12]
enter (return ctrl-m)
space
backspace (bspace bs)
alt-up
alt-down
alt-left
alt-right
alt-home
alt-end
alt-backspace (alt-bspace alt-bs)
alt-delete
alt-page-up
alt-page-down
alt-enter
alt-space
tab
shift-tab (btab)
esc
delete (del)
up
down
left
right
home
end
insert
page-up (pgup)
page-down (pgdn)
ctrl-up
ctrl-down
ctrl-left
ctrl-right
ctrl-home
ctrl-end
ctrl-backspace (ctrl-bspace ctrl-bs)
ctrl-delete
ctrl-page-up
ctrl-page-down
shift-up
shift-down
shift-left
shift-right
shift-home
shift-end
shift-delete
shift-page-up
shift-page-down
alt-shift-up
alt-shift-down
alt-shift-left
alt-shift-right
alt-shift-home
alt-shift-end
alt-shift-delete
alt-shift-page-up
alt-shift-page-down
ctrl-alt-up
ctrl-alt-down
ctrl-alt-left
ctrl-alt-right
ctrl-alt-home
ctrl-alt-end
ctrl-alt-backspace (ctrl-alt-bspace ctrl-alt-bs)
(ctrl-alt-h (در غیر
ویندوز))
ctrl-alt-delete
ctrl-alt-page-up
ctrl-alt-page-down
ctrl-shift-up
ctrl-shift-down
ctrl-shift-left
ctrl-shift-right
ctrl-shift-home
ctrl-shift-end
ctrl-shift-delete
ctrl-shift-page-up
ctrl-shift-page-down
ctrl-alt-shift-up
ctrl-alt-shift-down
ctrl-alt-shift-left
ctrl-alt-shift-right
ctrl-alt-shift-home
ctrl-alt-shift-end
ctrl-alt-shift-delete
ctrl-alt-shift-page-up
ctrl-alt-shift-page-down
left-click
right-click
double-click
scroll-up
scroll-down
preview-scroll-up
preview-scroll-down
shift-left-click
shift-right-click
shift-scroll-up
shift-scroll-down
یا هر
تکنویسه
دیگر
توجه داشته باشید که ممکن است برخی از شبیهسازهای ترمینال از پیوندهای ctrl-* پشتیبانی نکنند.
رویدادهای در دسترس (AVAILABLE EVENTS):
start
برای
نمونه:
# انتقال
مکاننما
به آخرین
مورد و
انتخاب
تمام
موارد
seq 1000 | fzf --multi --sync --bind start:last+select-all
load
برای
نمونه:
# تغییر
اعلان به "loaded"
هنگامی که
جریان
ورودی کامل
میشود
(seq 10; sleep 1; seq 11 20) | fzf --prompt 'Loading> ' --bind
'load:change-prompt:Loaded> '
resize
برای
نمونه:
fzf --bind 'resize:transform-header:echo Resized:
${FZF_COLUMNS}x${FZF_LINES}'
result
برای
نمونه:
# قرار دادن
مکاننما
روی مورد
دوم هنگامی
که رشته
پرسوجو
خالی است
# * توجه
داشته
باشید که در
این حالت
نمیتوانید
از رویداد 'change'
استفاده
کنید زیرا
ممکن است
موقعیت دوم
در دسترس
نباشد
fzf --sync --bind 'result:transform:[[ -z {q} ]] && echo
"pos(2)"'
result-final
برای
نمونه:
# رویداد 'result'
به ازای هر
اسنپشات
میانی فعال
میشود
(سربرگ در
طول
بارگذاری
مدام
بهروزرسانی
میشود)؛
# رویداد 'result-final'
یکبار پس
از بسته شدن
جریان فعال
میشود
(پاورقی
تعداد
نهایی را
نمایش
میدهد)
(seq 100; sleep 1; seq 100) | fzf --query 1 \
--bind 'result:transform-header(echo result:
$FZF_MATCH_COUNT),result-final:transform-footer(echo final:
$FZF_MATCH_COUNT)'
change
برای
نمونه:
# انتقال
مکاننما
به نخستین
ورودی هر
بار که
پرسوجو
تغییر
میکند
fzf --bind change:first
برای
نمونه:
fzf --bind 'focus:transform-preview-label:echo [ {} ]' --preview 'cat
{}'
# هر کنش متصل
به رویداد
بهصورت
همگام اجرا
میشود و در
نتیجه
میتواند
رابط
کاربری را
کند کند
# برای نمونه
lolcat برنامه
چندان
سریعی نیست
و هر حرکت
مکاننما
در fzf
# به طور
محسوسی تحت
تأثیر زمان
اجرای آن
قرار خواهد
گرفت
fzf --bind 'focus:transform-preview-label:echo [ {} ] | lolcat -f' --preview
'cat {}'
# مراقب
باشید که
حلقه
بینهایت
ایجاد
نکنید
seq 10 | fzf --bind 'focus:up' --cycle
one
برای
نمونه:
# انتخاب
خودکار
تنها مورد
منطبق
seq 10 | fzf --bind one:accept
zero
برای
نمونه:
# بارگذاری
مجدد لیست
کاندیدها
هنگامی که
تطابقی
وجود
ندارد
echo $RANDOM | fzf --bind 'zero:reload(echo $RANDOM)+clear-query' --height
3
backward-eof
برای
نمونه:
fzf --bind backward-eof:abort
jump
برای
نمونه:
fzf --bind space:jump,jump:accept
jump-cancel
برای
نمونه:
fzf --bind space:jump,jump:accept,jump-cancel:abort
click-header
برای
نمونه:
# کلیک روی
خط سربرگ
برای محدود
کردن دامنه
جستجو
ps -ef | fzf --style full --layout reverse --header-lines 1 \
--header-lines-border bottom --no-list-border \
--color fg:dim,nth:regular \
--bind 'click-header:transform-nth(
echo $FZF_CLICK_HEADER_NTH
)+transform-prompt(
echo "$FZF_CLICK_HEADER_WORD> "
)'
click-footer
every(N)
این رویداد را با متغیرهای محیطی FZF_IDLE_TIME (ثانیههای کامل) و FZF_IDLE_TIME_MS (میلیثانیهها) ترکیب کنید تا رفتار مبتنی بر عدم فعالیت (idle) را بدون نیاز به یک رویداد جداگانه پیادهسازی کنید.
برای
نمونه:
# لیست زنده
فرآیندها،
بهروزرسانی
در هر ۲
ثانیه.
# گزینه --track --id-nth 2
مکاننما
را در
بازنشانیها
روی همان PID
نگه
میدارد.
fzf --header-lines 1 --track --id-nth 2 \
--bind 'start,every(2):reload-sync:ps -ef'
# تایید
خودکار پس
از ۱۰ ثانیه
عدم
فعالیت،
همراه با
شمارش
معکوس در
پاورقی پس
از ۵ ثانیه.
fzf --bind 'every(1):bg-transform:
if [[ $FZF_IDLE_TIME -lt 5 ]]; then echo change-footer:
elif [[ $FZF_IDLE_TIME -lt 10 ]]; then echo "change-footer:auto-accept
in $((10 - FZF_IDLE_TIME))s"
else echo accept
fi'
کنشهای در دسترس (AVAILABLE ACTIONS):
یک کلید یا یک رویداد میتواند به یک یا چند مورد از کنشهای زیر متصل شود.
ACTION: DEFAULT BINDINGS (NOTES):
abort ctrl-c ctrl-g ctrl-q esc
accept enter double-click
accept-non-empty (مشابه
accept، اما از
خروج fzf بدون
انتخاب
مورد
جلوگیری
میکند)
accept-or-print-query (مشابه
accept، اما در
صورت نبود
تطابق،
رشته
پرسوجو را
چاپ میکند)
backward-char ctrl-b left
backward-delete-char ctrl-h ctrl-bspace bspace
backward-delete-char/eof (مشابه
backward-delete-char، اما
در صورت
خالی بودن
پرسوجو fzf
را لغو
میکند)
backward-kill-subword
backward-kill-word alt-bs
backward-subword
backward-word alt-b shift-left alt-left
become(...)
(جایگزینی
فرآیند fzf با
دستور
مشخصشده؛
برای
جزئیات به
زیر مراجعه
کنید)
beginning-of-line ctrl-a home
bell (به صدا
درآوردن
زنگ
ترمینال)
best (انتقال
به بهترین
تطابق؛
مشابه first در
صورت
غیرفعال
بودن حالت
خام)
bg-cancel (لغو
فرآیندهای
تبدیل
پسزمینه)
cancel (پاک کردن
رشته
پرسوجو در
صورت خالی
نبودن، در
غیر این
صورت لغو fzf)
change-border-label(...) (تغییر
--border-label به رشته
دادهشده)
change-ghost(...) (تغییر
متن شبح به
رشته
دادهشده)
change-header(...) (تغییر
سربرگ به
رشته
دادهشده؛
تاثیری بر
--header-lines ندارد)
change-header-lines(N) (تغییر
تعداد --header-lines)
change-header-label(...) (تغییر
--header-label به رشته
دادهشده)
change-input-label(...) (تغییر
--input-label به رشته
دادهشده)
change-list-label(...) (تغییر
--list-label به رشته
دادهشده)
change-multi
(فعالسازی
حالت
انتخاب
چندگانه
بدون
محدودیت)
change-multi(...)
(فعالسازی
حالت
انتخاب
چندگانه با
محدودیت
مشخص یا
غیرفعالسازی
آن با 0)
change-nth(...) (تغییر
گزینه --nth؛
چرخش میان
گزینههای
جداشده با '|')
change-with-nth(...) (تغییر
گزینه --with-nth؛
چرخش میان
گزینههای
جداشده با '|')
change-pointer(...) (تغییر
گزینه --pointer)
change-preview(...) (تغییر
گزینه --preview)
change-preview-label(...) (تغییر
--preview-label به رشته
دادهشده)
change-preview-window(...) (تغییر
گزینه --preview-window؛
چرخش میان
گزینههای
جداشده با '|')
change-prompt(...) (تغییر
اعلان به
رشته
دادهشده)
change-query(...) (تغییر
رشته
پرسوجو به
رشته
دادهشده)
clear-screen ctrl-l
clear-multi (پاک کردن
انتخاب
چندگانه)
close (بستن
پنجره
پیشنمایش
در صورت باز
بودن، در
غیر این
صورت لغو fzf)
clear-query (پاک کردن
رشته
پرسوجو)
delete-char del
delete-char/eof ctrl-d
(مشابه delete-char،
اما در صورت
خالی بودن
پرسوجو fzf
را لغو
میکند)
deselect
deselect-all (لغو
انتخاب
تمام
تطابقها؛
برای پاک
کردن
انتخابهای
غیرتطبیقی
نیز از clear-multi
استفاده
کنید)
disable-raw (غیرفعال
کردن حالت
خام)
disable-search
(غیرفعال
کردن
قابلیت
جستجو)
down ctrl-j down
down-match ctrl-n alt-down
(حرکت به
تطابق زیر
مکاننما)
down-selected (حرکت به
مورد
انتخابشده
زیر
مکاننما)
enable-raw (فعال
کردن حالت
خام)
enable-search (فعال
کردن
قابلیت
جستجو)
end-of-line ctrl-e end
exclude (مستثنی
کردن مورد
جاری از
نتیجه)
exclude-multi (مستثنی
کردن موارد
انتخابشده
یا مورد
جاری از
نتیجه)
execute(...) (برای
جزئیات به
زیر مراجعه
کنید)
execute-silent(...) (برای
جزئیات به
زیر مراجعه
کنید)
first (انتقال
به نخستین
تطابق؛
مشابه pos(1))
forward-char ctrl-f right
forward-subword
forward-word alt-f shift-right alt-right
ignore
jump (حرکت
دوکلیدی
مشابه EasyMotion)
kill-line
kill-subword
kill-word alt-d
last (انتقال
به آخرین
تطابق؛
مشابه pos(-1))
next-history (ctrl-n در --history)
next-selected
(هممعنی با
down-selected)
page-down pgdn
page-up pgup
half-page-down
half-page-up
hide-header
hide-input
hide-preview
offset-down (مشابه CTRL-E
در Vim)
offset-up (مشابه CTRL-Y
در Vim)
offset-middle (قرار
دادن مورد
جاری در وسط
صفحه)
pos(...) (انتقال
مکاننما
به موقعیت
عددی؛ عدد
منفی برای
شمارش از
انتها)
prev-history (ctrl-p در --history)
prev-selected
(هممعنی با
up-selected)
preview(...) (برای
جزئیات به
زیر مراجعه
کنید)
preview-down shift-down
preview-up shift-up
preview-page-down
preview-page-up
preview-half-page-down
preview-half-page-up
preview-bottom
preview-top
print(...) (افزودن
رشته به صف
خروجی و چاپ
در خروج
عادی)
put (قرار دادن
کاراکتر در
اعلان)
put(...) (قرار
دادن رشته
دادهشده
در اعلان)
refresh-preview
rebind(...) (اتصال
مجدد
کلیدها پس
از unbind)
reload(...) (برای
جزئیات به
زیر مراجعه
کنید)
reload-sync(...) (برای
جزئیات به
زیر مراجعه
کنید)
replace-query
(جایگزینی
رشته
پرسوجو با
انتخاب
جاری)
search(...) (آغاز
جستجوی fzf با
رشته
مشخصشده)
select
select-all (انتخاب
تمام
تطابقها)
show-header
show-input
show-preview
toggle (right-click)
toggle-all (تغییر
وضعیت تمام
تطابقها)
toggle-in (--layout=reverse* ? toggle+up :
toggle+down)
toggle-out (--layout=reverse* ? toggle+down :
toggle+up)
toggle-bind
toggle-header
toggle-hscroll
toggle-input
toggle-multi-line
toggle-preview
toggle-preview-wrap
toggle-preview-wrap-word
toggle-raw (تغییر
وضعیت حالت
خام برای
نمایش
موارد
غیرتطبیقی)
toggle-search (تغییر
وضعیت
قابلیت
جستجو)
toggle-sort
toggle-track (تغییر
وضعیت
ردگیری
سراسری (--track))
toggle-track-current (تغییر
وضعیت
ردگیری
مورد جاری)
toggle-wrap
toggle-wrap-word ctrl-/ alt-/
toggle+down ctrl-i (tab)
toggle+up btab (shift-tab)
track-current (ردگیری
مورد جاری؛
با تغییر
تمرکز
خودبهخود
غیرفعال
میشود)
transform(...) (تبدیل
وضعیتها
با استفاده
از خروجی یک
دستور
خارجی)
transform-border-label(...) (تبدیل
برچسب کادر
با استفاده
از یک دستور
خارجی)
transform-ghost(...) (تبدیل
متن شبح با
استفاده از
یک دستور
خارجی)
transform-header(...) (تبدیل
سربرگ با
استفاده از
یک دستور
خارجی)
transform-header-lines(...) (تبدیل
تعداد --header-lines
با استفاده
از یک دستور
خارجی)
transform-header-label(...) (تبدیل
برچسب
سربرگ با
استفاده از
یک دستور
خارجی)
transform-input-label(...) (تبدیل
برچسب
ورودی با
استفاده از
یک دستور
خارجی)
transform-list-label(...) (تبدیل
برچسب لیست
با استفاده
از یک دستور
خارجی)
transform-nth(...) (تبدیل nth
با استفاده
از یک دستور
خارجی)
transform-with-nth(...) (تبدیل
with-nth با
استفاده از
یک دستور
خارجی)
transform-pointer(...) (تبدیل
نشانگر با
استفاده از
یک دستور
خارجی)
transform-preview-label(...) (تبدیل
برچسب
پیشنمایش
با استفاده
از یک دستور
خارجی)
transform-prompt(...) (تبدیل
رشته اعلان
با استفاده
از یک دستور
خارجی)
transform-query(...) (تبدیل
رشته
پرسوجو با
استفاده از
یک دستور
خارجی)
transform-search(...) (آغاز
جستجوی fzf با
خروجی یک
دستور
خارجی)
trigger(...) (اجرای
کنشهای
متصل به
فهرست
کلیدها و
رویدادهای
جداشده با
کاما)
unbind(...) (لغو
اتصالات
کلیدها)
unix-line-discard ctrl-u
unix-word-rubout ctrl-w
untrack-current (توقف
ردگیری
مورد جاری؛
در صورت
فعال بودن
ردگیری
سراسری
بیاثر است)
wait (مسدود
کردن اجرای
کنش تا زمان
تکمیل
جستجو)
up ctrl-k up
up-match ctrl-p alt-up (حرکت
به تطابق
بالای
مکاننما)
up-selected (حرکت به
مورد
انتخابشده
بالای
مکاننما)
yank ctrl-y
هر کنش transform* دارای یک گونه معادل bg-transform* است که دستور را در پسزمینه اجرا میکند.
ترکیب کنشها (ACTION COMPOSITION)
چندین کنش را میتوان با استفاده از جداکننده + به یکدیگر زنجیر کرد.
برای
نمونه:
fzf --multi --bind 'ctrl-a:select-all+accept'
fzf --multi --bind 'ctrl-a:select-all' --bind 'ctrl-a:+accept'
هر کنشی پس از یک کنش پایانی که موجب خروج از fzf میشود، مانند accept یا abort، نادیده گرفته خواهد شد.
آرگومان کنش (ACTION ARGUMENT)
کنشی که با پسوند (...) مشخص شده باشد، یک آرگومان میپذیرد.
برای
نمونه:
fzf --bind 'ctrl-a:change-prompt(NewPrompt> )'
fzf --bind 'ctrl-v:preview(cat {})' --preview-window hidden
اگر آرگومان دارای پرانتز باشد، ممکن است fzf نتواند عبارت را به درستی تجزیه کند. در این صورت، برای جلوگیری از خطاهای تجزیه میتوانید از هر یک از قالبهای جایگزین زیر استفاده کنید:
action-name[...]
action-name{...}
action-name<...>
action-name~...~
action-name!...!
action-name@...@
action-name#...#
action-name$...$
action-name%...%
action-name^...^
action-name&...&
action-name*...*
action-name;...;
action-name/.../
action-name|...|
action-name:...
اجرای دستور (COMMAND EXECUTION)
با کنش execute(...)، میتوانید دستورات دلخواه را بدون خروج از fzf اجرا کنید. برای نمونه، میتوانید با مقیدسازی کلید enter به دستور less به صورت زیر، fzf را به یک مرورگر فایل ساده تبدیل کنید:
fzf --bind "enter:execute(less {})"
میتوانید از همان عبارتهای جاینگهدار مشابه آنچه در --preview آمده استفاده کنید.
هنگام اجرای یک دستور، fzf به صفحه متناوب سوییچ میکند. با این حال، اگر انتظار میرود دستور سریعاً تکمیل شود و علاقهای به خروجی آن ندارید، میتوانید به جای آن از execute-silent استفاده کنید که دستور را بدون سوییچ کردن صفحه و در سکوت اجرا میکند. توجه داشته باشید که fzf تا زمان تکمیل دستور پاسخگو نخواهد بود. برای اجرای ناهمگام، دستور خود را به عنوان یک فرایند پسزمینه اجرا کنید (یعنی با افزودن & در انتهای آن).
در سامانههای *nix، برنامه fzf دستور را در صورت تنظیم بودن متغیر SHELL با $SHELL -c، و در غیر این صورت با sh -c اجرا میکند؛ بنابراین در این حالت مطمئن شوید که دستور با استاندارد POSIX سازگار باشد.
کنش become(...) مشابه execute(...) است، اما با استفاده از فراخوان سیستمی execve(2)، فرایند فعلی fzf را با دستور مشخصشده جایگزین میکند.
fzf --bind "enter:become(vim {})"
بازخوانی ورودی (RELOAD INPUT)
کنش reload(...) برای بهروزرسانی پویای فهرست ورودی بدون نیاز به راهاندازی مجدد fzf به کار میرود. این کنش از همان الگوی دستوری با عبارتهای جاینگهدار مشابه execute(...) استفاده میکند.
برای اطلاعات بیشتر، https://github.com/junegunn/fzf/issues/1750 را ببینید.
برای
نمونه:
#
بهروزرسانی
فهرست
فرایندها
با فشردن CTRL-R
ps -ef | fzf --bind 'ctrl-r:reload(ps -ef)' --header 'Press CTRL-R to
reload' \
--header-lines=1 --layout=reverse
#
یکپارچهسازی
با ripgrep
RG_PREFIX="rg --column --line-number --no-heading --color=always
--smart-case "
INITIAL_QUERY="foobar"
FZF_DEFAULT_COMMAND="$RG_PREFIX '$INITIAL_QUERY'" \
fzf --bind "change:reload:$RG_PREFIX {q} || true" \
--ansi --disabled --query "$INITIAL_QUERY"
reload-sync(...) نسخه همگام reload است که فهرست را تنها پس از تکمیل دستور جایگزین میکند. این ویژگی زمانی مفید است که تولید خروجی اولیه توسط دستور مدتی زمان میبرد و مایل نیستید در حین اجرای دستور، fzf با یک فهرست خالی کار کند.
برای
نمونه:
# همچنان
میتوانید
به مدت ۳
ثانیه
ورودیها
را از فهرست
اولیه
پالایش
کرده و
برگزینید
seq 100 | fzf --bind 'load:reload-sync(sleep 3; seq
1000)+unbind(load)'
کنشهای تبدیل (TRANSFORM ACTIONS)
کنشهای دارای پیشوند transform- برای دگرگونسازی وضعیتهای fzf با استفاده از خروجی یک دستور خارجی به کار میروند. انتظار میرود خروجی این دستورات یک سطر تکخطی از متن باشد.
برای
نمونه:
fzf --bind 'focus:transform-header:file --brief {}'
کنش transform(...) یک دستور خارجی را اجرا میکند که باید دنبالهای از کنشهای قابل اجرا را چاپ کند. خروجی باید به همان قالب بار داده (payload) در درخواست HTTP POST ارسالشده به سرور --listen باشد.
برای
نمونه:
# عدم اجازه
برای
انتخاب سطر
خالی
printf "1. Hello\n2. Goodbye\n\n3. Exit" |
fzf --height '~100%' --reverse --header 'Select one' \
--bind 'enter:transform:[[ -n {} ]] &&
echo accept ||
echo "change-header:Invalid selection"'
یک اشتباه رایج هنگام نوشتن کنش transform، عدم اسکیپ کردن عبارتهای جاینگهدار هنگام ارسال مجدد آنها به fzf است. در مثال زیر، اگر {} را اسکیپ نکنید، fzf فوراً آن را با رشته نقلقولشدهٔ (single-quoted) مورد فعلی جایگزین میکند. این موضوع باعث نمایش علامتهای گیومه تکی در سربرگ و پانویس شده و در صورتی که هر موردی دارای نویسههای گیومه دوتایی (double-quote) باشد، اسکریپت با شکست مواجه میشود.
fzf --bind 'focus:transform:[[ $FZF_ACTION =~ up ]] &&
echo "change-header()+transform-footer:echo \{}" ||
echo "change-footer()+transform-header:echo \{}"'
تبدیل در پسزمینه (TRANSFORM IN THE BACKGROUND)
کنشهای تبدیل همگام هستند؛ یعنی در حین اجرای دستور، fzf پاسخگو نخواهد بود. برای جلوگیری از این امر، هر کنش transform* دارای یک گونهٔ متناظر bg-transform* است که در پسزمینه اجرا میشود. مگر اینکه نیاز داشته باشید چندین کنش تبدیل را که در آنها کنشهای پسین به نتایج پیشین وابسته هستند به یکدیگر زنجیر کنید، ترجیحاً از گونهٔ bg استفاده کنید. برای لغو فرایندهای تبدیل در حال اجرا در پسزمینه، از کنش bg-cancel استفاده کنید.
انتظار برای تکمیل جستجو (WAITING FOR SEARCH COMPLETION)
کنش wait اجرای کنشهای پسین را تا زمان تکمیل جستجوی جاری مسدود میکند. این قابلیت هنگام زنجیرهسازی کنشهای تغییردهندهٔ پرسوجو با کنشهای حرکتی مانند best یا first سودمند است و تضمین میکند که کنش حرکتی بر روی نتایج کامل جستجو عمل کند، نه دادههای قدیمی و نامعتبر.
برای
نمونه:
fzf --bind 'start:change-query(foo)+wait+best'
در این مثال، change-query(foo) یک جستجوی ناهمگام را برای پرسوجوی جدید آغاز میکند، wait تا زمان تکمیل جستجو روند را مسدود میسازد، و سپس best مکاننما را به بهترین تطابق در کل مجموعه نتایج منتقل میکند.
بارگذاری اولیهٔ ورودی نیز به عنوان یک جستجوی در حال انجام در نظر گرفته میشود، بنابراین میتوان از start:wait برای مسدودسازی تا زمان بارگذاری و جستجوی کامل ورودی بهره گرفت.
در زمان انتظار، ورودی کاربر نادیده گرفته میشود؛ به جز کلیدهایی که به abort یا cancel مقید شدهاند (به صورت پیشفرض ctrl-c، ctrl-g، ctrl-q و esc)، که به جای ایفای نقش معمول خود، انتظار را لغو کرده و کنشهای معلق را نادیده میگیرند. سایر کنشهای چنین مقیدسازیای همچنان اجرا میشوند، بنابراین قیدی مانند esc:cancel+first امکانپذیر است.
کنشهای ناهمگام bg-transform-* تحت تأثیر قرار نمیگیرند؛ نتایج آنها به محض آماده شدن، حتی در حین انتظار، اعمال میشوند. به همین دلیل، wait با آنها جفت نمیشود: در bg-transform-query(...)+wait، دستور پسزمینه تنها پس از اینکه wait از پیش ارزیابی شده است کامل میشود، بنابراین برای جستجویی که نهایتاً توسط نتیجه آن راهاندازی میگردد انتظاری رخ نمیدهد. هنگام زنجیرهسازی با wait، در عوض از گونهٔ همگام transform-query(...) استفاده کنید.
اگر جستجو به اندازه کافی طول بکشد، fzf با کمرنگ کردن ورودی، پنهان کردن مکاننما و نمایش (..) در خط اطلاعات، وضعیت انتظار را نشان میدهد. این بازخورد دیداری دارای تثبیت زمانی (debounced) است تا جستجوهای سریع موجب پرش تصویر نشوند.
توجه داشته باشید که اگر جستجوها با توالی سریع آغاز شوند (برای نمونه از طریق --listen)، ممکن است wait با تکمیل جستجوی پیشین از انسداد خارج شود. همچنین، در صورتی که منبع ورودی هرگز پایان نیابد، wait تا زمان لغو شدن مسدود خواهد ماند.
مقیدسازی پیشنمایش (PREVIEW BINDING)
با کنش preview(...) میتوانید افزون بر دستور پیشنمایش پیشفرض که توسط گزینهٔ --preview تعیین شده است، چندین دستور پیشنمایش مختلف دیگر را مشخص کنید.
برای
نمونه:
# دستور
پیشنمایش
پیشفرض به
همراه یک
مقیدسازی
پیشنمایش
اضافی
fzf --preview 'file {}' --bind '?:preview:cat {}'
# یک
مقیدسازی
پیشنمایش
بدون دستور
پیشنمایش
پیشفرض
# (پنجره
پیشنمایش
در ابتدا
خالی است)
fzf --bind '?:preview:cat {}'
# پنجره
پیشنمایش
به صورت
پیشفرض
پنهان است و
با فشردن
کلید '?'
نمایان
میشود
fzf --bind '?:preview:cat {}' --preview-window hidden
تغییر مشخصههای پنجره پیشنمایش (CHANGE PREVIEW WINDOW ATTRIBUTES)
از کنش change-preview-window میتوان برای تغییر ویژگیهای پنجره پیشنمایش استفاده کرد. بر خلاف گزینهٔ --preview-window، میتوانید مجموعههای چندگانهای از گزینهها را که با نویسهٔ '|' از یکدیگر جدا شدهاند تعیین کنید.
برای
نمونه:
# چرخش بین
گزینهها
با استفاده
از CTRL-/
fzf --preview 'cat {}' --bind
'ctrl-/:change-preview-window(right,70%|down,40%,border-horizontal|hidden|right)'
# ویژگیهای
پیشفرض
مشخصشده
توسط `--preview-window` به
ارث برده
میشوند،
بنابراین
یک رشته
خالی در
فهرست به
عنوان حالت
پیشفرض در
نظر گرفته
میشود
fzf --preview 'cat {}' --preview-window 'right,40%,border-left' --bind
'ctrl-/:change-preview-window(70%|down,border-top|hidden|)'
# این حالت
معادل کنش
toggle-preview است
fzf --preview 'cat {}' --bind 'ctrl-/:change-preview-window(hidden|)'
نویسندگان (AUTHORS)
Junegunn Choi (junegunn.c@gmail.com)
همچنین ببینید (SEE ALSO)
وبگاه پروژه:
افزونه اختصاصی Vim:
مجوز (LICENSE)
MIT
| Aug 2026 | fzf 0.74.3 |