fzf(1) fzf - a command-line fuzzy finder fzf(1)

fzf - ابزار جستجوگر فازی خط فرمان

fzf [گزینه‌ها]

ابزار fzf یک برنامه فیلتر تعاملی برای هر نوع فهرستی است.

این ابزار یک الگوریتم تطبیق «فازی» را پیاده‌سازی می‌کند، بنابراین می‌توانید به سرعت الگوها را با حروفی حذف‌شده تایپ کرده و همچنان نتایج مورد نظر خود را دریافت کنید.

بیشتر گزینه‌های طولانی دارای نسخه‌ای متضاد با پیشوند
--no- هستند.

حالت جستجوی گسترش‌یافته (Extended-search). به صورت پیش‌فرض فعال است. می‌توانید آن را با +x یا --no-extended غیرفعال کنید.
فعال کردن تطبیق دقیق (Exact-match).
تطبیق غیرحساس به بزرگی و کوچکی حروف (پیش‌فرض: تطبیق هوشمند smart-case).
+i, --no-ignore-case
تطبیق حساس به بزرگی و کوچکی حروف.
تطبیق هوشمند حروف (پیش‌فرض). در این حالت، جستجو به صورت پیش‌فرض به حروف کوچک و بزرگ حساس نیست، اما اگر عبارت جستجو دارای هرگونه حرف بزرگ باشد، جستجو به حروف بزرگ و کوچک حساس خواهد شد.
عدم نرمال‌سازی حروف لاتین برای تطبیق (مقایسه عینی کاراکترها).
انتخاب طرح امتیازدهی (Scoring scheme) متناسب با انواع مختلف ورودی.
default
طرح امتیازدهی عمومی که برای عملکرد مناسب با هر نوع ورودی طراحی شده است.
path
امتیاز تشویقی اضافی فقط به کاراکترهای پس از جداکننده مسیر تعلق می‌گیرد. اگر فایل‌های زیادی با فاصله در مسیرشان دارید، ممکن است بخواهید این طرح را به جای default انتخاب کنید. این گزینه همچنین --tiebreak=pathname,length را تنظیم می‌کند تا به تطابق‌های رخ‌داده در آخرین بخش از مسیر فایل اولویت داده شود.
history
طرح امتیازدهی بسیار مناسب برای تاریخچه دستورات یا هر ورودی دیگری که ترتیب زمانی در آن مهم است. هیچ امتیاز تشویقی اضافی داده نمی‌شود تا وزن بیشتری به ترتیب زمانی اختصاص یابد. این گزینه همچنین --tiebreak=index را تنظیم می‌کند.
ابزار fzf طرح path را زمانی انتخاب می‌کند که ورودی یک دستگاه TTY باشد، جایی که fzf پیمایشگر داخلی خود را راه‌اندازی می‌کند یا $FZF_DEFAULT_COMMAND را اجرا می‌نماید، و هیچ عملیات reload یا transform به رویداد start متصل نشده باشد. در غیر این صورت، طرح default را انتخاب می‌کند.
الگوریتم تطبیق فازی (پیش‌فرض: v2)

v2 الگوریتم امتیازدهی بهینه (کیفیت)
v1 سریع‌تر اما یافتن نتیجه بهینه تضمین نمی‌شود (کارایی)

فهرست جداشده با کاما از عبارات اندیس فیلد برای محدود کردن دامنه جستجو. برای جزئیات به بخش FIELD INDEX EXPRESSION مراجعه کنید. هنگامی که از این گزینه به همراه --with-nth استفاده می‌کنید، عبارات اندیس فیلد روی خطوط دگرگون‌شده محاسبه می‌شوند (برخلاف --preview که فیلدها از خطوط اصلی استخراج می‌شوند)، زیرا fzf اجازه جستجو در فیلدهای پنهان را نمی‌دهد.
دگرگون کردن نحوه نمایش هر خط با استفاده از عبارات اندیس فیلد. برای دگرگون‌سازی پیشرفته، می‌توانید الگویی شامل عبارات اندیس فیلد در داخل آکولاد مشخص کنید. هنگامی که از یک الگو استفاده می‌کنید، جداکننده انتهایی از هر عبارت حذف می‌شود که کنترل بیشتری روی خروجی به شما می‌دهد. مقدار {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) باید چاپ شوند. آخرین جداکننده از خروجی حذف می‌شود. برای دگرگون‌سازی پیشرفته، می‌توانید الگویی شامل عبارات اندیس فیلد در داخل آکولاد مشخص کنید. زمانی که از الگو استفاده می‌کنید، جداکننده انتهایی از هر عبارت حذف می‌شود که کنترل بیشتری بر خروجی فراهم می‌سازد. مقدار {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
عدم مرتب‌سازی نتایج
عبارت منظم (Regex) جداکننده فیلد برای --nth ، --with-nth و عبارات اندیس فیلد (پیش‌فرض: سبک AWK).
حداکثر تعداد آیتم‌هایی که در حافظه نگهداری می‌شوند. این گزینه زمانی مفید است که می‌خواهید جریانی بی‌پایان از داده‌ها (مانند جریان گزارش‌های لاگ) را با fzf مرور کنید و در عین حال مصرف حافظه را محدود نگه‌دارید.
مثال:
# فیلتر کردن تعاملی جریان گزارش‌های لاگ
tail -f *.log | fzf --tail 100000 --tac --no-sort --exact
عدم انجام جستجو. با این گزینه، fzf به جای یک «جستجوگر فازی» به یک واسط انتخابگر ساده تبدیل می‌شود. بعداً می‌توانید با استفاده از عملیات enable-search یا toggle-search جستجو را فعال کنید.
فهرست جداشده با کاما از معیارهای مرتب‌سازی که در هنگام برابر شدن امتیازها اعمال می‌شوند.

length اولویت به خط با طول کوتاه‌تر
chunk اولویت به خط با بخش تطبیق‌یافته کوتاه‌تر (جداشده با فاصله‌ها)
pathname اولویت به خط با زیررشته تطبیق‌یافته در نام فایلِ مسیر
begin اولویت به خط با زیررشته تطبیق‌یافته نزدیک‌تر به ابتدا
end اولویت به خط با زیررشته تطبیق‌یافته نزدیک‌تر به انتها
index اولویت به خطی که زودتر در جریان ورودی ظاهر شده است

- هر معیار فقط باید یک بار در فهرست ظاهر شود
- مقدار index تنها در انتهای فهرست مجاز است
- در صورت مشخص نشدن، index به صورت ضمنی به انتهای فهرست افزوده می‌شود
- پیش‌فرض length است (یا به طور معادل length,index)
- اگر end در فهرست باشد، fzf هر خط را از انتها به ابتدا جستجو می‌کند

خواندن ورودی جداشده با کاراکترهای اسکی NUL به جای کاراکترهای خط جدید
چاپ خروجی جداشده با کاراکترهای اسکی NUL به جای کاراکترهای خط جدید
فعال‌سازی پردازش کدهای رنگی ANSI
جستجوی همگام (Synchronous) برای فیلترسازی چندمرحله‌ای. در صورت تعیین این گزینه، fzf جستجوگر را تنها پس از تکمیل جریان ورودی، فیلتر اولیه و اتمام تمام عملیات‌های مرتبط (متصل به هر یک از start ، load ، result ، result-final یا focus ) راه‌اندازی می‌کند.
مثال: # جلوگیری از رندر هم‌زمان هر دو نمونه fzf
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

جستجوی دستگاه TTY فعلی از طریق خطای استاندارد (stderr) به جای پیش‌فرض قرار دادن /dev/tty . این گزینه از بروز مشکل هنگام اجرای emacsclient از درون fzf جلوگیری می‌کند. همچنین می‌توانید دستگاه TTY پیش‌فرض را با تنظیم --tty-default=DEVICE_NAME تغییر دهید.

اعمال یک پیش‌تنظیم سبک [default|minimal|full[:BORDER_STYLE]]
پیکربندی رنگ‌ها. نام طرح رنگی پایه با نگاشت‌های رنگی سفارشی دنبال می‌شود. هر ورودی با کاما و/یا فاصله‌ها از هم جدا می‌شود.
طرح پایه (BASE SCHEME):
(پیش‌فرض: 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
'

غیرفعال کردن رنگ‌ها
عدم استفاده از متن پررنگ (Bold)
استفاده از پس‌زمینه مشکی

نمایش پنجره fzf در زیر مکان‌نما با ارتفاع داده‌شده به جای استفاده از کل صفحه.

اگر یک مقدار منفی مشخص شود، ارتفاع برابر با ارتفاع ترمینال منهای مقدار داده‌شده محاسبه می‌شود.

fzf --height=-1

هنگامی که پیشوند ~ به آن افزوده شود، fzf به صورت خودکار ارتفاع را در این محدوده با توجه به حجم ورودی تعیین می‌کند. می‌توانید ~ را با یک مقدار منفی ترکیب کنید.

# تمام ۱۰۰٪ صفحه را اشغال نخواهد کرد
seq 5 | fzf --height=~100%
# هماهنگ با اندازه ورودی، حداکثر تا ارتفاع ترمینال منهای ۱
seq 5 | fzf --height=~-1

ارتفاع انطباقی دارای محدودیت‌های زیر است:
* نمی‌توان آن را همراه با حاشیه بیرونی (margin) و فاصله‌گذاری درونی (padding) بالا/پایین که بر حسب درصد مشخص شده‌اند به کار برد
* زمانی که آیتم‌های چندخطی وجود داشته باشند اندازه مناسب را پیدا نمی‌کند

حداقل ارتفاع زمانی که --height به صورت درصد داده شده باشد. علامت + را اضافه کنید تا این مقدار با توجه به سایر گزینه‌های چیدمان به طور خودکار افزایش یابد، به گونه‌ای که تعداد آیتم‌های مشخص‌شده در بخش فهرست قابل مشاهده باشند (پیش‌فرض: 10+ ). اگر --height مشخص نشده باشد یا به صورت یک مقدار مطلق تعیین شده باشد، نادیده گرفته می‌شود.
اجرای 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

انتخاب نوع چیدمان (پیش‌فرض: default)

default نمایش از پایین صفحه
reverse نمایش از بالای صفحه
reverse-list نمایش از بالای صفحه، اعلان در پایین

یک مترادف برای --layout=reverse
عبارت جداشده با کاما برای حاشیه‌های بیرونی (Margins) در اطراف پنجره جستجوگر.
TRBL حاشیه یکسان برای بالا، راست، پایین و چپ
TB,RL حاشیه عمودی، افقی
T,RL,B حاشیه بالا، افقی، پایین
T,R,B,L حاشیه بالا، راست، پایین، چپ

هر بخش می‌تواند به صورت یک عدد مطلق یا به صورت درصد نسبت به اندازه ترمینال با پسوند % مشخص شود.

مثال:
fzf --margin 10%
fzf --margin 1,5%

عبارتی جداشده با کاما برای فاصله‌گذاری درونی (padding) در داخل کادر حاشیه. فاصله‌گذاری درونی تنها زمانی از حاشیه بیرونی (margin) قابل تشخیص است که گزینه --border به کار رفته باشد.

مثال:
fzf --margin 5% --padding 5% --border --preview 'cat {}' \
--color bg:#222222,preview-bg:#333333

TRBL فاصله‌گذاری یکسان برای بالا، راست، پایین و چپ
TB,RL فاصله‌گذاری عمودی، افقی
T,RL,B فاصله‌گذاری بالا، افقی، پایین
T,R,B,L فاصله‌گذاری بالا، راست، پایین، چپ
رسم حاشیه در اطراف یابنده

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) برچسب را در مرکز خط حاشیه قرار می‌دهد.

فعال‌سازی انتخاب چندگانه با tab/shift-tab. این گزینه به طور اختیاری یک آرگومان عددی صحیح می‌پذیرد که حداکثر تعداد موارد قابل انتخاب را مشخص می‌کند.
+m, --no-multi
غیرفعال‌سازی انتخاب چندگانه
برجسته‌سازی کل سطر جاری
فعال‌سازی پیمایش چرخه‌ای
فعال‌سازی شکستن سطرها. MODE می‌تواند char (پیش‌فرض) یا word باشد. حالت word سطرها را در مرز کلمات (فاصله‌ها و تب‌ها) می‌شکند به جای آن که در موقعیت‌های کاراکتری دلخواه بشکند. گزینه --wrap-word مترادفی برای --wrap=word است.
--wrap-sign=INDICATOR
نشانگر سطرهای شکسته شده. مقدار پیش‌فرض بسته به --no-unicode برابر '↳ ' یا '> ' است.
غیرفعال‌سازی نمایش چندخطی موارد هنگام استفاده از --read0
فعال‌سازی حالت خام که در آن مواردی که مطابقت ندارند نیز با رنگی کم‌رنگ نمایش داده می‌شوند.
باعث می‌شود 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'

تعریف فیلدهای هویتی مورد برای عملیات‌های در طول بازخوانی (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'
معکوس کردن ترتیب ورودی
مثال:
history | fzf --tac --no-sort
رسم سطرهای خالی بین هر مورد
--gap-line[=STR]
رشته داده‌شده برای رسم خط افقی در هر فاصله تکرار خواهد شد (پیش‌فرض: '┈' یا '-' بسته به --no-unicode).
تعداد فیلدهایی که باید در سمت چپ ثابت شوند.
تعداد فیلدهایی که باید در سمت راست ثابت شوند.
نمایان نگه داشتن انتهای سمت راست سطر هنگامی که بیش از حد طولانی است. تنها زمانی موثر است که رشته پرس‌وجو خالی باشد. در صورتی که می‌خواهید فیلد آخر حتی با وجود پرس‌وجوی غیرخالی همواره نمایان باشد، به جای آن از --freeze-right=1 استفاده کنید.
تعداد سطرهای صفحه نمایش که هنگام پیمایش به بالا یا پایین، در بالا یا پایین حفظ می‌شوند (پیش‌فرض: ۳).
غیرفعال‌سازی پیمایش افقی
تعداد ستون‌های صفحه نمایش برای حفظ در سمت راست زیررشته برجسته شده (پیش‌فرض: ۱۰). تنظیم آن روی یک مقدار بزرگ باعث می‌شود متن در مرکز صفحه قرار گیرد.
کاراکترهای برچسب برای حالت jump
نویسه مورد استفاده برای ستون ناودان حاشیه (gutter) (پیش‌فرض: '▌' مگر این‌که --no-unicode داده شده باشد)
نویسه مورد استفاده برای ستون ناودان حاشیه در حالت خام (پیش‌فرض: '▖' مگر این‌که --no-unicode داده شده باشد)
اشاره‌گر به سطر جاری (پیش‌فرض: '▌' یا '>' بسته به --no-unicode)
نشانگر انتخاب چندگانه (پیش‌فرض: '┃' یا '>' بسته به --no-unicode)
نشانگر انتخاب چندگانه برای ورودی‌های چندسطری؛ ۳ عنصر برای بالا، میانه و پایین (پیش‌فرض: '╻┃╹' یا '.|´' بسته به --no-unicode).
علامت حذف برای نمایش هنگام بریده شدن سطر (پیش‌فرض: '··')
تعداد فاصله‌ها برای یک نویسه تب (پیش‌فرض: ۸)
استفاده از نویسه داده‌شده برای رسم نوار پیمایش (پیش‌فرض: '│' یا ':' بسته به --no-unicode ). نویسه اختیاری CHAR2 برای رسم نوار پیمایش پنجره پیش‌نمایش به کار می‌رود.
عدم نمایش نوار پیمایش. مترادفی برای --scrollbar=''
رسم حاشیه در اطراف بخش فهرست. سبک line برای این حاشیه پشتیبانی نمی‌شود.
برچسب برای چاپ روی حاشیه فهرست
موقعیت برچسب فهرست

غیرفعال‌سازی و پنهان کردن بخش ورودی. در این حالت دیگر نمی‌توانید پرس‌وجو تایپ کنید. برای راه‌اندازی جستجو، از کنش search استفاده کنید. بعداً می‌توانید بخش ورودی را با استفاده از کنش‌های show-input یا toggle-input نمایش دهید، و دوباره آن را با hide-input یا toggle-input پنهان کنید.
اعلان ورودی (پیش‌فرض: '> ')
تعیین سبک نمایش اطلاعات یابنده (مانند شمارنده تطابق‌ها، نشانگر بارگذاری و غیره).

default در انتهای سمت چپ جداکننده افقی
right در انتهای سمت راست جداکننده افقی
hidden عدم نمایش اطلاعات یابنده
inline پس از اعلان با پیشوند پیش‌فرض ' < '
inline:PREFIX پس از اعلان با یک پیشوند سفارشی
inline-right در انتهای سمت راست سطر اعلان
inline-right:PREFIX در انتهای سمت راست سطر اعلان با یک پیشوند سفارشی

دستور برای تولید سطر اطلاعات یابنده. این دستور به صورت همگام اجرا شده و رابط کاربری را تا زمان پایان مسدود می‌کند، بنابراین مطمئن شوید که سریع است. از کدهای رنگی ANSI پشتیبانی می‌شود. متغیر $FZF_INFO روی متن اصلی اطلاعات تنظیم شده است. برای مشاهده متغیرهای محیطی دیگری که در دسترس این دستور قرار دارند، به بخش ENVIRONMENT VARIABLES EXPORTED TO CHILD PROCESSES مراجعه کنید.

مثال:
# افزودن موقعیت فعلی مکان‌نما به ابتدای سطر با رنگ زرد
fzf --info-command='printf "\x1b[33;1m$FZF_POS\x1b[m/$FZF_INFO 💛"'

مترادفی برای --info=hidden
رشته داده‌شده برای تشکیل جداکننده افقی در سطر اطلاعات تکرار خواهد شد (پیش‌فرض: '─' یا '-' بسته به --no-unicode ).

مگر این‌که صراحتاً مشخص شده باشد، اگر بخش ورودی پیشاپیش توسط یک خط حاشیه از بخش فهرست به صورت بصری جدا شده باشد (مثلاً --input-border یا --header-border )، جداکننده نمایش داده نخواهد شد.

از کدهای رنگی ANSI پشتیبانی می‌شود.

عدم نمایش جداکننده افقی در سطر اطلاعات. مترادفی برای --separator=''
متن شبح (ghost text) برای نمایش در زمانی که ورودی خالی است
باعث می‌شود حرکت‌ها و کنش‌های کلمه‌به‌کلمه جداکننده‌های مسیر را رعایت کنند. کنش‌های زیر تحت تاثیر قرار می‌گیرند:

backward-kill-word
backward-word
forward-word
kill-word

رسم حاشیه در اطراف بخش ورودی. سبک line یک خط جداکننده تکی میان بخش ورودی و بخش فهرست رسم می‌کند.
برچسب برای چاپ روی حاشیه ورودی
موقعیت برچسب ورودی

اجرای دستور داده‌شده برای سطر جاری و نمایش نتیجه در پنجره پیش‌نمایش. نویسه‌های {} در دستور، جانگهداری است که با رشته محصور در نقل‌قول تکی سطر جاری جایگزین می‌شود. برای تغییر شکل رشته جایگزین، عبارت‌های اندیس فیلد را میان آکولادها مشخص کنید (برای جزئیات به 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-window=border-STYLE line یک خط جداکننده تکی میان پنجره پیش‌نمایش و باقی رابط کاربری رسم می‌کند.
برچسبی برای چاپ روی خط افقی حاشیه پنجره پیش‌نمایش. باید همراه با یکی از گزینه‌های زیر برای --preview-window استفاده شود:

* border-rounded (پیش‌فرض در پلتفرم‌های غیر ویندوز)
* border-sharp (پیش‌فرض در ویندوز)
* border-bold
* border-double
* border-dashed
* border-block
* border-thinblock
* border-horizontal
* border-top
* border-bottom

نشانگر سطرهای شکسته شده در پنجره پیش‌نمایش. در صورت عدم تعیین، از مقدار --wrap-sign استفاده می‌شود.
موقعیت برچسب حاشیه روی خط کادر پنجره پیش‌نمایش. یک عدد صحیح مثبت را به عنوان موقعیت ستون از سمت چپ مشخص کنید. برای راست‌چین کردن برچسب، یک عدد صحیح منفی مشخص نمایید. برچسب به طور پیش‌فرض روی خط حاشیه بالایی چاپ می‌شود، برای قرار دادن آن روی خط حاشیه پایینی، :bottom را اضافه کنید. مقدار پیش‌فرض 0 (یا center) برچسب را در مرکز خط حاشیه قرار می‌دهد.
POSITION: (پیش‌فرض: right)
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)'

رشته داده‌شده به عنوان سرآیند چسبان (sticky header) چاپ خواهد شد. خطوط بدون در نظر گرفتن گزینه --layout به همان ترتیب داده‌شده از بالا به پایین نمایش داده می‌شوند و تحت تأثیر --with-nth قرار نمی‌گیرند. کدهای رنگی ANSI حتی در صورت تنظیم نبودن --ansi نیز پردازش می‌شوند.
تعداد N خط نخست ورودی به عنوان سرآیند چسبان در نظر گرفته می‌شود. هنگامی که --with-nth تنظیم شده باشد، این خطوط دقیقاً مانند سایر خطوط پس از خود تبدیل و دگرگون می‌شوند.
چاپ سرآیند پیش از خط اعلان (prompt). هنگامی که هم سرآیند معمولی و هم خطوط سرآیند (--header-lines) حضور داشته باشند، این گزینه تنها روی سرآیند معمولی اعمال می‌شود.
رسم کادر در اطراف بخش سرآیند. سبک 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-lines با کادری جداگانه. مقدار none را ارسال کنید تا خطوط سرآیند همچنان تفکیک شوند اما کادری نداشته باشند. برای ادغام دو سرآیند، از --no-header-lines-border استفاده کنید. سبک line یک خط جداکننده منفرد بین خطوط سرآیند و بخش فهرست رسم می‌کند. سبک inline خطوط سرآیند را با یک جداکننده افقی درون قاب کادر فهرست تعبیه می‌کند؛ این سبک نیازمند شکلی از --list-border است که هر دو بخش بالا و پایین را داشته باشد، و در غیر این صورت به line تنزل می‌یابد.

رشته داده‌شده به عنوان پاورقی چسبان (sticky footer) چاپ خواهد شد. خطوط بدون در نظر گرفتن گزینه --layout به همان ترتیب داده‌شده از بالا به پایین نمایش داده می‌شوند و تحت تأثیر --with-nth قرار نمی‌گیرند. کدهای رنگی ANSI حتی زمانی که --ansi تنظیم نشده باشد نیز پردازش می‌شوند.
رسم کادر در اطراف بخش پاورقی. سبک line یک خط جداکننده منفرد بین پاورقی و بخش فهرست رسم می‌کند. سبک inline پاورقی را با یک جداکننده افقی درون قاب کادر فهرست جای می‌دهد؛ این سبک به شکلی از --list-border نیاز دارد که دارای هر دو بخش بالا و پایین باشد و در غیر این صورت به line تنزل پیدا می‌کند.
برچسبی که روی کادر پاورقی چاپ می‌شود
موقعیت برچسب پاورقی

شروع یابنده با عبارت پرس‌وجوی (query) داده‌شده
-1, --select-1
اگر برای پرس‌وجوی اولیه (--query) تنها یک تطابق وجود داشته باشد، یابنده تعاملی را آغاز نکن و به‌طور خودکار تنها مورد منطبق را انتخاب کن
-0, --exit-0
اگر برای پرس‌وجوی اولیه (--query) هیچ تطابقی وجود نداشته باشد، یابنده تعاملی را آغاز نکن و بلافاصله خارج شو
حالت پالایش (Filter mode). یابنده تعاملی اجرا نمی‌شود. در صورت استفاده به همراه --no-sort، دستور fzf به یک نسخه فازی از grep تبدیل می‌شود.
چاپ پرس‌وجو به عنوان نخستین خط خروجی
فهرستی از کلیدهای جداشده با کاما که می‌توان علاوه بر کلید پیش‌فرض 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'
هنگام خروج، رابط یابنده پاک نشود. اگر fzf در حالت تمام‌صفحه اجرا شده باشد، به صفحه اولیه باز نخواهد گشت، بنابراین باید به صورت دستی دستور tput rmcup را برای بازگشت اجرا کنید. از این گزینه می‌توان برای جلوگیری از پرش تصویر (flickering) هنگامی که برنامه شما نیاز دارد fzf را چندین بار پشت سر هم اجرا کند استفاده نمود. (توجه داشته باشید که در بیشتر موارد، بهتر است به جای آن از کنش reload استفاده شود.)

مثال:

foo=$(seq 100 | fzf --no-clear) || (
  # در صورت انصراف، بازگشت دستی به صفحه اصلی ضروری است
  tput rmcup
  exit 1
) && seq "$foo" 100 | fzf

فهرستی از پیوندهای سفارشی کلید/رویداد جداشده با کاما. برای جزئیات به بخش پیوندهای کلید/رویداد (KEY/EVENT BINDINGS) مراجعه فرمایید.

دستور پوسته و فلگ‌هایی که فرآیندهای فرزند با آن‌ها اجرا می‌شوند. در سیستم‌های شبه‌یونیکس (*nix)، اگر $SHELL تنظیم شده باشد، مقدار پیش‌فرض $SHELL -c و در غیر این صورت sh -c است. در ویندوز، اگر $SHELL تنظیم نشده باشد، مقدار پیش‌فرض cmd /s/c خواهد بود.
راه‌اندازی سرور 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
تعداد ریسمان‌های تطابق‌دهنده برای استفاده. مقدار پیش‌فرض min(8 * NUM_CPU, 32) است.
اجرای مکرر --filter برای مدت زمان مشخص‌شده و چاپ آمارهای زمانی. حتماً باید همراه با --filter به کار رود.

مثال:

cat /usr/share/dict/words | fzf --filter abc --bench 10s

رفتار پیمایشگر دایرکتوری داخلی را تعیین می‌کند که هنگام تنظیم نبودن $FZF_DEFAULT_COMMAND استفاده می‌شود. مقدار پیش‌فرض file,follow,hidden است.

* file : گنجاندن فایل‌ها در نتیجه جستجو
* dir : گنجاندن دایرکتوری‌ها در نتیجه جستجو
* hidden : گنجاندن و دنبال کردن دایرکتوری‌های پنهان
* follow : دنبال کردن پیوندهای نمادین (سیمبلیک لینک‌ها)

فهرستی از نام دایرکتوری‌ها برای آغاز به کار پیمایشگر دایرکتوری داخلی. مقدار پیش‌فرض دایرکتوری کاری فعلی است.
فهرستی از نام دایرکتوری‌های جداشده با کاما جهت نادیده‌گرفتن حین پیمایش دایرکتوری. مقدار پیش‌فرض .git,node_modules است.

بارگذاری تاریخچه جستجو از فایل مشخص‌شده و به‌روزرسانی آن فایل در هنگام پایان کار. هنگام فعال بودن، کلیدهای CTRL-N و CTRL-P به‌طور خودکار به next-history و prev-history تغییر نگاشت می‌یابند.
حداکثر تعداد مدخل‌ها در فایل تاریخچه (پیش‌فرض: 1000). در صورتی که تعداد خطوط از این مقدار فراتر رود، فایل به‌طور خودکار کوتاه می‌شود.
مثال: gem list | fzf --with-shell 'ruby -e' --preview 'pp Gem::Specification.find_by_name({1})'

چاپ اسکریپت راه‌اندازی و ادغام با پوسته Bash

مثال: eval "$(fzf --bash)"

چاپ اسکریپت راه‌اندازی و ادغام با پوسته Zsh

مثال: source <(fzf --zsh)

چاپ اسکریپت راه‌اندازی و ادغام با پوسته Fish

مثال: fzf --fish | source

چاپ اسکریپت راه‌اندازی و ادغام با پوسته Nushell

مثال: fzf --nushell | save -f ~/.config/nushell/autoload/_fzf_integration.nu

غیرفعال کردن موشواره
استفاده از نویسه‌های ASCII به جای نویسه‌های ترسیمی یونیکد برای رسم کادرها، نشانگر پیشرفت (spinner) و جداکننده افقی.
در صورتی که شبیه‌ساز ترمینال شما نویسه‌های با عرض مبهم (مانند نویسه‌های ترسیم کادر) را در ۲ ستون نمایش می‌دهد، این گزینه را تنظیم کنید.

نمایش اطلاعات نسخه و خروج
نمایش پیام راهنما
نمایش صفحه راهنما (man page)

دستور پیش‌فرض برای استفاده زمانی که ورودی یک دستگاه TTY است. در سیستم‌های شبه‌یونیکس (*nix)، اگر SHELL تنظیم شده باشد fzf دستور را با $SHELL -c و در غیر این صورت با sh -c اجرا می‌کند، بنابراین در این حالت مطمئن شوید که دستور با استاندارد POSIX سازگار است.
گزینه‌های پیش‌فرض.
مثال: export FZF_DEFAULT_OPTS="--layout=reverse --border --cycle"
مسیر فایلی که شامل گزینه‌های پیش‌فرض است.
مثال: export FZF_DEFAULT_OPTS_FILE=~/.fzfrc
می‌تواند برای الزام ورود کلید API هنگام استفاده از گزینه --listen استفاده شود. در صورت تنظیم نبودن، هیچ احراز هویتی توسط سرور الزامی نخواهد بود. اگر نیاز به محافظت در برابر حملات اتصال مجدد DNS (DNS rebinding) و ارتقای دسترسی دارید، می‌توانید این مقدار را تنظیم کنید.

0 خروج عادی
1 عدم تطابق
2 خطا
126 خطای عدم دسترسی (Permission denied) از کنش become
127 دستور پوسته نامعتبر برای کنش become
130 وقفه‌یافته با CTRL-C یا ESC

یک عبارت شاخص فیلد می‌تواند یک عدد صحیح غیر صفر یا یک عبارت محدوده ([BEGIN]..[END]) باشد. گزینه‌های --nth و --with-nth فهرستی از عبارات شاخص فیلد جداشده با کاما را می‌پذیرند.

1 فیلد اول
2 فیلد دوم
-1 آخرین فیلد
-2 یکی مانده به آخرین فیلد
3..5 از فیلد سوم تا فیلد پنجم
2.. از فیلد دوم تا آخرین فیلد
..-3 از فیلد اول تا سومی مانده به آخرین فیلد
.. تمامی فیلدها

دستور 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) نمی‌تواند آن را منتقل کند. همچنین اگر مورد بزرگ‌تر از ۶۴ کیلوبایت باشد نیز حذف می‌شود تا یک مورد بسیار بزرگ نتواند از سقف مجاز اندازه متغیرهای محیطی فراتر رفته و موجب اختلال در پیش‌نمایش و سایر دستورات فرزند شود.

مگر در مواردی که غیر از این مشخص شده باشد، fzf در «حالت جستجوی گسترده» شروع به کار خواهد کرد. در این حالت، می‌توانید چندین الگو را که با فاصله از هم تفکیک شده‌اند مشخص کنید، مانند: 'wild ^music .mp3$ sbtrkt !rmx

می‌توانید پیش از کاراکتر فاصله یک بک‌اسلش قرار دهید ( ) تا دقیقاً با خود کاراکتر فاصله تطابق یابد.

عبارتی که با یک نویسه نقل‌قول تکی (') شروع شود، به عنوان یک عبارت «تطابق دقیق» (یا «غیرفازی») تفسیر می‌شود. دستور fzf دقیقاً به دنبال رخدادهای عینی آن رشته می‌گردد.

یک عبارت می‌تواند پیشوند ^ یا پسوند $ داشته باشد تا به یک عبارت تطابق لنگردار تبدیل شود. در این صورت fzf خطوطی را جستجو می‌کند که با رشته داده‌شده شروع شده یا به آن ختم می‌شوند. یک عبارت تطابق لنگردار، خود یک عبارت تطابق دقیق نیز هست.

عبارتی که در هر دو طرف با کوتیشن تکی احاطه شده باشد، به عنوان یک «تطابق دقیق در مرز کلمه» تفسیر می‌شود. دستور fzf به دنبال رخدادهای دقیق رشته‌ای می‌گردد که هر دو انتهای آن در مرزهای کلمه باشند. برخلاف عبارات منظم (regular expressions)، در اینجا زیرخط (underscore) نیز به عنوان یک مرز کلمه شناخته می‌شود. اما کلمات پیرامون زیرخط رتبه پایین‌تری دریافت کرده و در نتایج دیرتر از کلمات پیرامون سایر انواع مرزهای کلمه ظاهر می‌شوند.

1. xxx foo xxx (بالاترین امتیاز)
2. xxx foo_xxx
3. xxx_foo xxx
4. xxx_foo_xxx (پایین‌ترین امتیاز)

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

اگر تطابق فازی را نمی‌پسندید و تمایلی ندارید که پیش از هر کلمه کوتیشن بگذارید (پیشوند ')، دستور fzf را با گزینه -e یا --exact آغاز کنید. توجه داشته باشید که با تنظیم گزینه --exact، پیشوند ' حالت تطابق دقیق را از عبارت برمی‌دارد (unquote می‌کند).

یک نویسه خط عمودی (|) منفرد به عنوان عملگر OR عمل می‌کند. به عنوان مثال، پرس‌وجوی زیر با مدخل‌هایی مطابقت دارد که با core شروع شده و به یکی از پسوندهای go، rb یا py ختم شوند.

مثال: ^core go$ | rb$ | py$

گزینه --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'

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-* پشتیبانی نکنند.

start

تنها یک‌بار هنگام شروع جستجوگر fzf فعال می‌شود. از آنجا که fzf جریان ورودی را به‌صورت ناهمگام مصرف می‌کند، لیست ورودی در دسترس نیست مگر اینکه از --sync استفاده کنید.

برای نمونه:
# انتقال مکان‌نما به آخرین مورد و انتخاب تمام موارد
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' به ازای هر اسنپ‌شات میانی فعال می‌شود (سربرگ در طول بارگذاری مدام به‌روزرسانی می‌شود)؛
# رویداد '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

focus
هنگامی که تمرکز به دلیل حرکت عمودی مکان‌نما یا به‌روزرسانی نتایج جستجو تغییر کند فعال می‌شود.

برای نمونه:
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

multi
هنگامی که انتخاب چندگانه تغییر کند فعال می‌شود.

one

هنگامی که تنها یک تطابق وجود دارد فعال می‌شود. اتصال one:accept مشابه گزینه --select-1 است، با این تفاوت که --select-1 تنها پیش از شروع جستجوگر تعاملی اثرگذار است، اما رویداد one توسط جستجوگر تعاملی فعال می‌شود.

برای نمونه:
# انتخاب خودکار تنها مورد منطبق
seq 10 | fzf --bind one:accept

zero

هنگامی که هیچ تطابقی وجود ندارد فعال می‌شود. اتصال zero:abort مشابه گزینه --exit-0 است، با این تفاوت که --exit-0 تنها پیش از شروع جستجوگر تعاملی مؤثر است، اما رویداد zero توسط جستجوگر تعاملی فعال می‌شود.

برای نمونه:
# بارگذاری مجدد لیست کاندیدها هنگامی که تطابقی وجود ندارد
echo $RANDOM | fzf --bind 'zero:reload(echo $RANDOM)+clear-query' --height 3

backward-eof

هنگامی که رشته پرس‌وجو از قبل خالی است و سعی می‌کنید آن را رو به عقب پاک کنید فعال می‌شود.

برای نمونه:
fzf --bind backward-eof:abort

jump

هنگامی که پرش به مورد هدف در حالت jump با موفقیت انجام شود فعال می‌شود.

برای نمونه:
fzf --bind space:jump,jump:accept

jump-cancel

هنگامی که حالت jump لغو شود فعال می‌شود.

برای نمونه:
fzf --bind space:jump,jump:accept,jump-cancel:abort

click-header

هنگامی که یک کلیک ماوس در سربرگ (header) رخ دهد فعال می‌شود. متغیرهای محیطی FZF_CLICK_HEADER_LINE و FZF_CLICK_HEADER_COLUMN را با شروع از مقدار ۱ تنظیم می‌کند. در صورت کلیک بر روی یک کلمه، متغیرهای FZF_CLICK_HEADER_WORD و FZF_CLICK_HEADER_NTH را نیز به صورت اختیاری مقداردهی می‌کند.

برای نمونه:
# کلیک روی خط سربرگ برای محدود کردن دامنه جستجو
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

هنگامی که یک کلیک ماوس درون پاورقی (footer) رخ دهد فعال می‌شود. متغیرهای محیطی FZF_CLICK_FOOTER_LINE و FZF_CLICK_FOOTER_COLUMN را با شروع از مقدار ۱ تنظیم می‌کند. در صورت کلیک بر روی یک کلمه، متغیر FZF_CLICK_FOOTER_WORD را نیز به صورت اختیاری مقداردهی می‌کند.

every(N)

هر N ثانیه یک‌بار فعال می‌شود (N می‌تواند یک عدد کسری/اعشاری باشد، مانند 0.5). حداقل بازه زمانی 0.01 ثانیه است؛ مقادیر کمتر به این مقدار گرد می‌شوند.

این رویداد را با متغیرهای محیطی 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'

یک کلید یا یک رویداد می‌تواند به یک یا چند مورد از کنش‌های زیر متصل شود.


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* است که دستور را در پس‌زمینه اجرا می‌کند.

چندین کنش را می‌توان با استفاده از جداکننده + به یکدیگر زنجیر کرد.

برای نمونه:
fzf --multi --bind 'ctrl-a:select-all+accept'
fzf --multi --bind 'ctrl-a:select-all' --bind 'ctrl-a:+accept'

هر کنشی پس از یک کنش پایانی که موجب خروج از fzf می‌شود، مانند accept یا abort، نادیده گرفته خواهد شد.

کنشی که با پسوند (...) مشخص شده باشد، یک آرگومان می‌پذیرد.

برای نمونه:
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:...

مورد آخر فرم ویژه‌ای است که شما را از خطاهای تجزیه در امان نگه می‌دارد زیرا نیازی به کاراکتر پایانی ندارد. نکته این است که این حالت باید آخرین مورد در فهرست جفت‌های کلید-کنش جداشده با کاما باشد.

با کنش 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(...) برای به‌روزرسانی پویای فهرست ورودی بدون نیاز به راه‌اندازی مجدد 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- برای دگرگون‌سازی وضعیت‌های 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 \{}"'

کنش‌های تبدیل همگام هستند؛ یعنی در حین اجرای دستور، fzf پاسخ‌گو نخواهد بود. برای جلوگیری از این امر، هر کنش transform* دارای یک گونهٔ متناظر bg-transform* است که در پس‌زمینه اجرا می‌شود. مگر این‌که نیاز داشته باشید چندین کنش تبدیل را که در آن‌ها کنش‌های پسین به نتایج پیشین وابسته هستند به یکدیگر زنجیر کنید، ترجیحاً از گونهٔ bg استفاده کنید. برای لغو فرایندهای تبدیل در حال اجرا در پس‌زمینه، از کنش bg-cancel استفاده کنید.

کنش 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(...) می‌توانید افزون بر دستور پیش‌نمایش پیش‌فرض که توسط گزینهٔ --preview تعیین شده است، چندین دستور پیش‌نمایش مختلف دیگر را مشخص کنید.

برای نمونه:
# دستور پیش‌نمایش پیش‌فرض به همراه یک مقیدسازی پیش‌نمایش اضافی
fzf --preview 'file {}' --bind '?:preview:cat {}'


# یک مقیدسازی پیش‌نمایش بدون دستور پیش‌نمایش پیش‌فرض
# (پنجره پیش‌نمایش در ابتدا خالی است)
fzf --bind '?:preview:cat {}'


# پنجره پیش‌نمایش به صورت پیش‌فرض پنهان است و با فشردن کلید '?' نمایان می‌شود
fzf --bind '?:preview:cat {}' --preview-window hidden

از کنش 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|)'

Junegunn Choi (junegunn.c@gmail.com)

وب‌گاه پروژه:

افزونه اختصاصی Vim:

MIT

Aug 2026 fzf 0.74.3