شكر خاص ل:
Warp عبارة عن محطة طرفية حديثة قائمة على Rust ومزودة بالذكاء الاصطناعي حتى تتمكن أنت وفريقك من إنشاء برامج رائعة بشكل أسرع.
قم بزيارة warp.dev لمعرفة المزيد.
fzf هو مكتشف غامض لسطر الأوامر للأغراض العامة.
إنه برنامج تصفية تفاعلي لأي نوع من القوائم؛ الملفات، وسجل الأوامر، والعمليات، وأسماء المضيفين، والإشارات المرجعية، وعمليات git، وما إلى ذلك. وهي تنفذ خوارزمية مطابقة "غامضة"، بحيث يمكنك كتابة الأنماط بسرعة باستخدام الأحرف المحذوفة والحصول على النتائج التي تريدها.
محمول - يتم توزيعه كبرنامج ثنائي واحد لسهولة التثبيت
سريع للغاية - يقوم الكود المحسن للغاية بمعالجة ملايين العناصر على الفور
متعددة الاستخدامات للغاية - قابلة للتخصيص بالكامل من خلال آلية ربط إجراء الحدث
البطاريات المضمنة - تتضمن التكامل مع bash وzsh وfish وVim وNeovim
أود أن أشكر جميع رعاة هذا المشروع الذين مكنوني من مواصلة تحسين fzf.
إذا كنت ترغب في رعاية هذا المشروع، يرجى زيارة https://github.com/sponsors/junegunn.
تثبيت
باستخدام البيرة المنزلية
حزم لينكس
حزم ويندوز
باستخدام بوابة
الإصدارات الثنائية
إعداد تكامل الصدفة
فيم/نيوفيم البرنامج المساعد
ترقية fzf
بناء فزف
الاستخدام
--height
--tmux
باستخدام الباحث
أوضاع العرض
بناء جملة البحث
متغيرات البيئة
خيارات
تجريبي
أمثلة
الارتباطات الرئيسية لسطر الأوامر
إكمال غامض لـ bash وzsh
الملفات والدلائل
معرفات العملية
أسماء المضيفين
متغيرات البيئة / الأسماء المستعارة
إعدادات
الأوامر المدعومة
استكمال غامض مخصص
البرنامج المساعد فيم
مواضيع متقدمة
1. قم بتحديث قائمة العمليات بالضغط على CTRL-R
2. قم بالتبديل بين المصادر بالضغط على CTRL-D أو CTRL-F
3. تكامل ripgrep التفاعلي
أداء
تنفيذ البرامج الخارجية
التحول إلى عملية مختلفة
إعادة تحميل قائمة المرشحين
نافذة المعاينة
معاينة الصورة
نصائح
احترام .gitignore
قذيفة السمك
ملعب موضوع fzf
المشاريع ذات الصلة
رخصة
يمكنك استخدام Homebrew (على نظام التشغيل macOS أو Linux) لتثبيت fzf.
تثبيت المشروب fzf
مهم
لإعداد تكامل الصدفة (ارتباطات المفاتيح والإكمال الغامض)، راجع الإرشادات أدناه.
يتوفر fzf أيضًا عبر MacPorts: sudo port install fzf
مدير الحزم | توزيع لينكس | يأمر |
---|---|---|
APK | جبال الألب لينكس | sudo apk add fzf |
ايه بي تي | ديبيان 9+/أوبونتو 19.10+ | sudo apt install fzf |
كوندا | conda install -c conda-forge fzf | |
DNF | فيدورا | sudo dnf install fzf |
لا شيء | نيكسوس، الخ. | nix-env -iA nixpkgs.fzf |
بكمن | آرتش لينكس | sudo pacman -S fzf |
حزمة | فري بي إس دي | pkg install fzf |
pkgin | نت بي إس دي | pkgin install fzf |
pkg_add | أوبن بي إس دي | pkg_add fzf |
حمل | جنتو | emerge --ask app-shells/fzf |
سباك | spack install fzf | |
XBPS | لينكس الفراغ | sudo xbps-install -S fzf |
سحاب | openSUSE | sudo zypper install fzf |
مهم
لإعداد تكامل الصدفة (ارتباطات المفاتيح والإكمال الغامض)، راجع الإرشادات أدناه.
على نظام التشغيل Windows، يتوفر fzf عبر Chocolatey وScoop وWinget وMSYS2:
مدير الحزم | يأمر |
---|---|
شوكولاتة | choco install fzf |
مغرفة | scoop install fzf |
وينجت | winget install fzf |
MSYS2 (بكمن) | pacman -S $MINGW_PACKAGE_PREFIX-fzf |
وبدلاً من ذلك، يمكنك "استنساخ git" لهذا المستودع في أي دليل وتشغيل البرنامج النصي للتثبيت.
git clone - العمق 1 https://github.com/junegunn/fzf.git ~/.fzf~/.fzf/install
سيضيف البرنامج النصي للتثبيت أسطرًا إلى ملف تكوين Shell الخاص بك لتعديل $PATH
وإعداد تكامل Shell.
يمكنك تنزيل ثنائيات fzf الرسمية من صفحة الإصدارات.
https://github.com/junegunn/fzf/releases
أضف السطر التالي إلى ملف تكوين Shell الخاص بك.
سحق
# إعداد روابط مفاتيح fzf وتقييم الإكمال الغامض "$(fzf --bash)"
zsh
# إعداد روابط مفاتيح fzf ومصدر الإكمال الغامض <(fzf --zsh)
سمكة
# قم بإعداد روابط مفتاح fzffzf --fish | مصدر
ملحوظة
تتوفر خيارات --bash
و --zsh
و --fish
فقط في الإصدار fzf 0.48.0 أو الإصدارات الأحدث. إذا كان لديك إصدار أقدم من fzf، أو كنت تريد تحكمًا أفضل، فيمكنك الحصول على ملفات نصية فردية في الدليل /shell. قد يختلف موقع الملفات اعتمادًا على مدير الحزم الذي تستخدمه. الرجاء الرجوع إلى وثائق الحزمة لمزيد من المعلومات. (على سبيل المثال apt show fzf
)
نصيحة
يمكنك تعطيل ربط CTRL-T أو ALT-C عن طريق تعيين FZF_CTRL_T_COMMAND
أو FZF_ALT_C_COMMAND
على سلسلة فارغة عند تحديد مصدر البرنامج النصي. على سبيل المثال، لتعطيل ربط ALT-C:
باش: FZF_ALT_C_COMMAND= eval "$(fzf --bash)"
zsh: FZF_ALT_C_COMMAND= source <(fzf --zsh)
السمك: fzf --fish | FZF_ALT_C_COMMAND= source
لن يكون لتعيين المتغيرات بعد تحديد مصدر البرنامج النصي أي تأثير.
إذا كنت تستخدم vim-plug، أضف هذا إلى ملف تكوين Vim الخاص بك:
قم بتوصيل 'junegunn/fzf'، { 'do': { -> fzf#install() } } قم بتوصيل "junegunn/fzf.vim"
يوفر junegunn/fzf
وظائف المكتبة الأساسية
fzf#install()
يتأكد من أن لديك أحدث إصدار ثنائي
junegunn/fzf.vim
هو مشروع منفصل يوفر مجموعة متنوعة من الأوامر المفيدة
لمعرفة المزيد حول تكامل Vim، راجع README-VIM.md.
نصيحة
إذا كنت تستخدم Neovim وتفضل المكونات الإضافية المستندة إلى Lua، فراجع fzf-lua.
يتم تطوير fzf بشكل نشط، وقد ترغب في ترقيته من حين لآخر. يرجى اتباع التعليمات الموضحة أدناه وفقًا لطريقة التثبيت المستخدمة.
git: cd ~/.fzf && git pull && ./install
الشراب: brew update; brew upgrade fzf
Macports: sudo port upgrade fzf
Chocolatey: choco upgrade fzf
vim-plug: :PlugUpdate fzf
انظر BUILD.md.
سيقوم fzf بتشغيل أداة البحث التفاعلية، وقراءة القائمة من STDIN، وكتابة العنصر المحدد في STDOUT.
تجد * - نوع f | فزف> المحدد
بدون توجيه STDIN، سيجتاز fzf نظام الملفات ضمن الدليل الحالي للحصول على قائمة الملفات.
فيم $(fzf)
ملحوظة
يمكنك تجاوز السلوك الافتراضي
إما عن طريق تعيين $FZF_DEFAULT_COMMAND
على أمر يقوم بإنشاء القائمة المطلوبة
أو عن طريق تعيين خيارات --walker
و --walker-root
و --walker-skip
في $FZF_DEFAULT_OPTS
تحذير
الحل الأكثر قوة هو استخدام xargs
ولكننا قدمنا ما سبق لأنه أسهل في الفهم
fzf --print0 | xargs -0 -o vim
نصيحة
يتمتع fzf أيضًا بالقدرة على تحويل نفسه إلى عملية مختلفة.
fzf --bind 'أدخل: أصبح (vim {})'
راجع التحول إلى عملية مختلفة لمزيد من المعلومات.
CTRL-K
/ CTRL-J
(أو CTRL-P
/ CTRL-N
) لتحريك المؤشر لأعلى ولأسفل
Enter
المفتاح لتحديد العنصر، CTRL-C
/ CTRL-G
/ ESC
للخروج
في وضع التحديد المتعدد ( -m
)، TAB
و Shift-TAB
لوضع علامة على عناصر متعددة
روابط مفتاح نمط Emacs
الماوس: قم بالتمرير، والنقر، والنقر المزدوج؛ انقر مع الضغط على مفتاح Shift وقم بالتمرير مع الضغط على مفتاح Shift في وضع التحديد المتعدد
يتم تشغيل fzf افتراضيًا في وضع ملء الشاشة، ولكن هناك أوضاع عرض أخرى.
--height
باستخدام --height HEIGHT[%]
، سيبدأ fzf أسفل المؤشر بالارتفاع المحدد.
فزف-الارتفاع 40%
يتناسب التخطيط reverse
و-- --border
بشكل جيد مع هذا الخيار.
fzf - الارتفاع 40٪ - التخطيط العكسي - الحدود
من خلال إضافة ~
إلى الارتفاع، فإنك تقوم بتعيين الحد الأقصى للارتفاع.
# سوف يستغرق الأمر أقل عدد ممكن من الأسطر لعرض القائمة 3 | fzf-الارتفاع ~100% ما يلي 3000 | fzf-الارتفاع ~100%
يمكن أن تكون قيمة الارتفاع رقمًا سالبًا.
# ارتفاع الشاشة - 3fzf - الارتفاع -3
--tmux
باستخدام خيار --tmux
، سيبدأ fzf في نافذة tmux المنبثقة.
# --tmux [center|top|bottom|left|right][,SIZE[%]][,SIZE[%]]fzf --tmux center # Center, 50% width and heightfzf --tmux 80% # Center, 80% العرض والارتفاعfzf --tmux 100%,50% # المركز، 100% العرض والارتفاع 50%fzf --tmux اليسار,40% # يسار، 40% widthfzf --tmux left,40%,90% # يسار, 40% عرض, 90% heightfzf --tmux top,40% # Top, 40% heightfzf --tmux Bottom,80%,40% # الجزء السفلي، ارتفاع 80%، ارتفاع 40%
--tmux
يتم تجاهله بصمت عندما لا تكون على tmux.
ملحوظة
إذا كنت عالقًا مع إصدار قديم من tmux لا يدعم النوافذ المنبثقة، أو إذا كنت تريد فتح fzf في جزء tmux عادي، فراجع البرنامج النصي fzf-tmux.
نصيحة
يمكنك إضافة هذه الخيارات إلى $FZF_DEFAULT_OPTS
بحيث يتم تطبيقها افتراضيًا. على سبيل المثال،
# افتح في نافذة tmux المنبثقة إذا كنت تستخدم tmux، وإلا فاستخدم --height modeexport FZF_DEFAULT_OPTS='-height 40% --tmux Bottom,40% --layoutverse --border top'
ما لم يتم تحديد خلاف ذلك، يبدأ fzf في "وضع البحث الموسع" حيث يمكنك كتابة مصطلحات بحث متعددة مفصولة بمسافات. على سبيل المثال ^music .mp3$ sbtrkt !fire
رمز مميز | نوع المطابقة | وصف |
---|---|---|
sbtrkt | مباراة غامضة | العناصر التي تطابق sbtrkt |
'wild | التطابق التام (مقتبس) | العناصر التي تشمل wild |
'wild' | تطابق تام للحدود (مقتبس من كلا الطرفين) | العناصر التي تتضمن wild عند حدود الكلمات |
^music | بادئة تطابق تام | العناصر التي تبدأ music |
.mp3$ | لاحقة المطابقة التامة | العناصر التي تنتهي بـ .mp3 |
!fire | المطابقة العكسية التامة | العناصر التي لا تشمل fire |
!^music | بادئة معكوسة، تطابق تام | العناصر التي لا تبدأ music |
!.mp3$ | معكوس لاحقة المطابقة التامة | العناصر التي لا تنتهي بـ .mp3 |
إذا كنت لا تفضل المطابقة الغامضة ولا ترغب في "اقتباس" كل كلمة، فابدأ fzf بالخيار -e
أو --exact
. لاحظ أنه عند ضبط --exact
، '
البادئة - "تحذف" المصطلح.
يعمل مصطلح حرف شريطي واحد كمشغل OR. على سبيل المثال، يطابق الاستعلام التالي الإدخالات التي تبدأ بـ core
وتنتهي بـ go
أو rb
أو py
.
^core go$ | rb$ | py$
FZF_DEFAULT_COMMAND
الأمر الافتراضي الذي سيتم استخدامه عندما يكون الإدخال tty
على سبيل المثال، export FZF_DEFAULT_COMMAND='fd --type f'
FZF_DEFAULT_OPTS
الخيارات الافتراضية
على سبيل المثال export FZF_DEFAULT_OPTS="--layout=reverse --inline-info"
FZF_DEFAULT_OPTS_FILE
إذا كنت تفضل إدارة الخيارات الافتراضية في ملف، فقم بتعيين هذا المتغير للإشارة إلى موقع الملف
على سبيل المثال، export FZF_DEFAULT_OPTS_FILE=~/.fzfrc
تحذير
لا يتم استخدام FZF_DEFAULT_COMMAND
من خلال تكامل Shell بسبب الاختلاف الطفيف في المتطلبات.
يقوم CTRL-T
بتشغيل $FZF_CTRL_T_COMMAND
للحصول على قائمة بالملفات والأدلة
يقوم ALT-C
بتشغيل $FZF_ALT_C_COMMAND
للحصول على قائمة بالأدلة
يقوم vim ~/**
بتشغيل fzf_compgen_path()
مع البادئة ( ~/
) كوسيطة أولى
cd foo**
يقوم بتشغيل fzf_compgen_dir()
مع البادئة ( foo
) كوسيطة أولى
سيتم وصف الخيارات المتاحة لاحقًا في هذا المستند.
راجع صفحة الدليل ( man fzf
) للحصول على القائمة الكاملة للخيارات.
إذا كنت تتعلم من خلال مشاهدة مقاطع الفيديو، فاطلع على تسجيل الشاشة هذا بواسطة @samoshkin لاستكشاف ميزات fzf
.
صفحة ويكي من الأمثلة
إخلاء المسؤولية: يتم الاحتفاظ بالأمثلة الموجودة في هذه الصفحة بواسطة المجتمع ولم يتم اختبارها بدقة
أمثلة fzf المتقدمة
من خلال إعداد تكامل الصدفة، يمكنك استخدام روابط المفاتيح التالية في bash، وzsh، وfish.
CTRL-T
- الصق الملفات والأدلة المحددة في سطر الأوامر
يمكنك تجاوز السلوك عن طريق تعيين FZF_CTRL_T_COMMAND
على أمر مخصص يقوم بإنشاء القائمة المطلوبة
أو يمكنك ضبط خيارات --walker*
في FZF_CTRL_T_OPTS
يتم إنشاء القائمة باستخدام الخيار --walker file,dir,follow,hidden
قم بتعيين FZF_CTRL_T_OPTS
لتمرير خيارات إضافية إلى fzf
# معاينة محتوى الملف باستخدام Bat (https://github.com/sharkdp/bat)export FZF_CTRL_T_OPTS=" --walker-skip .git,node_modules,target --preview 'bat -n --color=always {}' - -الربط 'ctrl-/:change-preview-window(down|hidden|)'"
يمكن تعطيله عن طريق تعيين FZF_CTRL_T_COMMAND
على سلسلة فارغة عند تحديد مصدر البرنامج النصي
CTRL-R
- الصق الأمر المحدد من السجل في سطر الأوامر
إذا كنت تريد رؤية الأوامر بالترتيب الزمني، فاضغط على CTRL-R
مرة أخرى والذي يقوم بتبديل الفرز حسب الصلة
اضغط على CTRL-/
أو ALT-/
لتبديل التفاف الخط
قم بتعيين FZF_CTRL_R_OPTS
لتمرير خيارات إضافية إلى fzf
# CTRL-Y لنسخ الأمر إلى الحافظة باستخدام pbcopyexport FZF_CTRL_R_OPTS=" --bind 'ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort' --color header:italic --header 'اضغط على CTRL-Y لنسخ الأمر إلى الحافظة'"
ALT-C
- قرص مضغوط في الدليل المحدد
أو يمكنك ضبط خيارات --walker-*
في FZF_ALT_C_OPTS
يتم إنشاء القائمة باستخدام الخيار --walker dir,follow,hidden
قم بتعيين FZF_ALT_C_COMMAND
لتجاوز الأمر الافتراضي
قم بتعيين FZF_ALT_C_OPTS
لتمرير خيارات إضافية إلى fzf
# طباعة بنية الشجرة في نافذة المعاينةexport FZF_ALT_C_OPTS=" --walker-skip .git,node_modules,target --preview 'tree -C {}'"
يمكن تعطيله عن طريق تعيين FZF_ALT_C_COMMAND
على سلسلة فارغة عند تحديد مصدر البرنامج النصي
يمكن تكوين أوضاع العرض لهذه الارتباطات بشكل منفصل عبر FZF_{CTRL_T,CTRL_R,ALT_C}_OPTS
أو عالميًا عبر FZF_DEFAULT_OPTS
. (على سبيل المثال FZF_CTRL_R_OPTS='--tmux bottom,60% --height 60% --border top'
)
يمكن العثور على مزيد من النصائح على صفحة الويكي.
يمكن تشغيل الإكمال الغامض للملفات والأدلة إذا انتهت الكلمة الموجودة قبل المؤشر بتسلسل المشغل، والذي يكون افتراضيًا **
.
COMMAND [DIRECTORY/][FUZZY_PATTERN]**
# الملفات الموجودة ضمن الدليل الحالي# - يمكنك تحديد عناصر متعددة باستخدام TAB keyvim **# الملفات الموجودة ضمن الدليل الأصلي vim ../** # الملفات الموجودة ضمن الدليل الأصلي التي تطابق `fzf`vim ../fzf* * # الملفات الموجودة ضمن الدليل الرئيسي الخاص بك vim ~/** # الدلائل الموجودة ضمن الدليل الحالي (تحديد فردي)cd ** # الدلائل الموجودة ضمن ~/github التي تطابق `fzf`cd ~/github/fzf**
يتم توفير إكمال غامض لمعرفات PID لأمر القتل.
# يمكن تحديد عمليات متعددة باستخدام مفتاحأو -9 **
بالنسبة لأوامر ssh وtelnet، يتم توفير إكمال غامض لأسماء المضيفين. يتم استخراج الأسماء من /etc/hosts و~/.ssh/config.
سش **تلنت **
إلغاء تعيين **تصدير ** unalias **
# استخدم ~~ كتسلسل المشغل بدلاً من الافتراضي **export FZF_COMPLETION_TRIGGER='~~'# خيارات لأمر fzfexport FZF_COMPLETION_OPTS='--border --info=inline'# استخدم fd (https://github.com/ Sharkdp/fd) لإدراج مرشحي المسار.# - الوسيطة الأولى للدالة ($1) هي المسار الأساسي لبدء الاجتياز# - راجع المصدر الكود (الإكمال.{bash,zsh}) للحصول على التفاصيل._fzf_compgen_path() { fd --hidden --follow --exclude ".git" . "$1"}# استخدم fd لإنشاء قائمة الدليلComplete_fzf_compgen_dir() { fd --type d --hidden --follow --exclude ".git" . "$1"}# التخصيص المتقدم لخيارات fzf عبر وظيفة _fzf_comprun# - الوسيطة الأولى للوظيفة هي اسم الأمر.# - يجب التأكد من تمرير بقية الوسائط إلى fzf._fzf_comprun() { أمر محلي = 1 دولار يحول الحالة "$command" incd) fzf --preview 'tree -C {} | رأس -200' "$@" ;; Export|unset) fzf --preview "eval 'echo $'{}" "$@" ;; ssh) fzf --preview 'dig {}' "$@" ;;*) fzf --preview 'bat -n --color=always {}' "$@" ;; إسحاق}
في bash، يتم تمكين الإكمال الغامض فقط لمجموعة محددة مسبقًا من الأوامر ( complete | grep _fzf
لرؤية القائمة). ولكن يمكنك تمكينه لأوامر أخرى أيضًا باستخدام وظيفة المساعد _fzf_setup_completion
.
# الاستخدام: _fzf_setup_completion path|dir|var|alias|commands host..._fzf_setup_completion path ag git kubectl _fzf_setup_completion شجرة الدير
(واجهة برمجة التطبيقات للإكمال المخصص تجريبية وقابلة للتغيير)
بالنسبة للأمر المسمى "COMMAND" ، قم بتعريف الدالة _fzf_complete_COMMAND
باستخدام المساعد _fzf_complete
.
# إكمال غامض مخصص لأمر "doge" # على سبيل المثال doge **_fzf_complete_doge() { _fzf_Complete --multi --reverse --prompt="doge> " -- "$@" < <( echo Very echo wow echo such echo doge )}
الوسيطات السابقة --
هي خيارات fzf.
بعد --
، ما عليك سوى تمرير وسيطات الإكمال الأصلية دون تغيير ( "$@"
).
بعد ذلك، اكتب مجموعة من الأوامر التي تولد مرشحي الإكمال وقم بتغذية مخرجاتها إلى الوظيفة باستخدام عملية استبدال ( < <(...)
).
سوف يلتقط zsh الوظيفة تلقائيًا باستخدام اصطلاح التسمية ولكن في bash يجب عليك ربط الوظيفة يدويًا بالأمر باستخدام الأمر complete
.
[ -n "$BASH"] && Complete -F _fzf_complete_doge -o default -o bashdefault doge
إذا كنت بحاجة إلى معالجة الإخراج من fzf بعد ذلك، فحدد _fzf_complete_COMMAND_post
كما يلي.
_fzf_Complete_foo() { _fzf_Complete --multi --reverse --header-lines=3 -- "$@" < <( ls -al )}_fzf_complete_foo_post() { أوك '{طباعة $NF}'} [ -n "$BASH"] && Complete -F _fzf_complete_foo -o default -o bashdefault foo
راجع الملف التمهيدي-VIM.md.
fzf سريع. لا ينبغي أن يكون الأداء مشكلة في معظم حالات الاستخدام. ومع ذلك، قد ترغب في أن تكون على دراية بالخيارات التي يمكن أن تؤثر على الأداء.
--ansi
يخبر fzf باستخراج رموز ألوان ANSI وتحليلها في الإدخال، ويجعل المسح الأولي أبطأ. لذلك لا يوصى بإضافته إلى $FZF_DEFAULT_OPTS
.
--nth
يجعل fzf أبطأ لأنه يجب عليه ترميز كل سطر.
--with-nth
يجعل fzf أبطأ حيث يتعين على fzf ترميز كل سطر وإعادة تجميعه.
يمكنك إعداد روابط المفاتيح لبدء العمليات الخارجية دون مغادرة fzf ( execute
، execute-silent
).
# اضغط على F1 لفتح الملف بأقل من ذلك دون ترك fzf# اضغط على CTRL-Y لنسخ السطر إلى الحافظة وإحباط fzf (يتطلب pbcopy)fzf --bind 'f1:execute(less -f {}),ctrl-y: تنفيذ صامت (صدى {} | pbcopy)+abort'
راجع قسم الارتباطات الرئيسية في صفحة الدليل للحصول على التفاصيل.
become(...)
مشابهًا execute(...)
/ execute-silent(...)
الموصوف أعلاه، ولكن بدلاً من تنفيذ الأمر والعودة إلى fzf عند الاكتمال، فإنه يحول fzf إلى عملية جديدة لـ يأمر.
fzf --bind 'أدخل: أصبح (vim {})'
بالمقارنة مع vim "$(fzf)"
الذي يبدو مكافئًا، فإن هذا الأسلوب له العديد من المزايا:
لن يفتح Vim ملفًا فارغًا عند إنهاء fzf باستخدام CTRL-C
لن يفتح Vim ملفًا فارغًا عندما تضغط على ENTER على نتيجة فارغة
يمكنه التعامل مع تحديدات متعددة حتى عندما تحتوي على مسافات بيضاء
fzf --multi --bind 'أدخل: أصبح (vim {+})'
لكي نكون منصفين، قم بتشغيل fzf --print0 | xargs -0 -o vim
بدلاً من vim "$(fzf)"
يحل جميع المشكلات المذكورة. ومع ذلك، become(...)
لا يزال يقدم فوائد إضافية في سيناريوهات مختلفة.
يمكنك إعداد روابط متعددة للتعامل مع النتيجة بطرق مختلفة دون أي برنامج نصي للالتفاف
fzf --bind 'أدخل:become(vim {})،ctrl-e:become(emacs {})'
في السابق، كان عليك استخدام --expect=ctrl-e
والتحقق من السطر الأول من إخراج fzf
يمكنك بسهولة إنشاء الأمر اللاحق باستخدام تعبيرات فهرس الحقول لـ fzf
# افتح الملف في Vim وانتقل إلى linegit grep --line-number . |fzf --delimiter : --nth 3.. --bind 'enter:become(vim {1} +{2})'
من خلال ربط إجراء reload
بمفتاح أو حدث، يمكنك جعل fzf يعيد تحميل قائمة المرشحين ديناميكيًا. انظر رقم 1750 للمزيد من التفاصيل.
ملاحظة -ef | fzf --bind 'ctrl-r:reload(ps -ef)' --header "اضغط على CTRL-R لإعادة التحميل" --header-lines=1 --الارتفاع=50% --التخطيط=عكسي
FZF_DEFAULT_COMMAND='ابحث عن . -النوع ف' fzf --bind 'ctrl-d:reload(find .-type d),ctrl-f:reload(eval "$FZF_DEFAULT_COMMAND")' --الارتفاع=50% --التخطيط=عكسي
يستخدم المثال التالي fzf كواجهة محدد لـ ripgrep. نحن ملزمون reload
change
الحدث، لذلك في كل مرة تكتب فيها fzf، ستتم إعادة تشغيل عملية ripgrep بسلسلة الاستعلام المحدثة التي يُشار إليها بتعبير العنصر النائب {q}
. لاحظ أيضًا أننا استخدمنا الخيار --disabled
حتى لا يقوم fzf بأي عملية تصفية ثانوية.
: | rg_prefix='rg --column --line-number --no-heading --color=always --smart-case' fzf --bind 'start:reload:$rg_prefix ""' --bind 'change:reload:$rg_prefix {q} || حقيقي' --bind 'أدخل: أصبح (vim {1} +{2})' --ansi --معطل --الارتفاع=50% --التخطيط=عكسي
إذا لم يجد ripgrep أي تطابقات، فسيتم الخروج بحالة خروج غير صفرية، وسيحذرك fzf بشأن ذلك. لقمع رسالة التحذير، أضفنا || true
للأمر، بحيث يخرج دائمًا بـ 0.
راجع "استخدام fzf كمشغل Ripgrep تفاعلي" للحصول على أمثلة أكثر تعقيدًا.
عند تعيين خيار --preview
، يبدأ fzf تلقائيًا عملية خارجية باستخدام السطر الحالي كوسيطة ويعرض النتيجة في النافذة المقسمة. يتم استخدام $SHELL
الخاص بك لتنفيذ الأمر باستخدام $SHELL -c COMMAND
. يمكن تمرير النافذة باستخدام الماوس أو روابط المفاتيح المخصصة.
تم استبدال # {} بالسلسلة ذات علامات الاقتباس المفردة للخط الذي تم التركيز عليه fzf --preview 'cat {}'
تدعم نافذة المعاينة ألوان ANSI، لذا يمكنك استخدام أي برنامج يقوم بإبراز محتوى الملف، مثل Bat أو Highlight:
fzf --preview 'bat --color=always {}' --preview-window '~3'
يمكنك تخصيص حجم نافذة المعاينة وموضعها وحدودها باستخدام خيار --preview-window
، ولون المقدمة والخلفية لها باستخدام خيار --color
. على سبيل المثال،
fzf - الارتفاع 40٪ - التخطيط العكسي - المعلومات المضمنة - الحدود - معاينة "ملف {}" - نافذة معاينة لأعلى، 1، حدود أفقية --الربط "ctrl-/:change-preview-window(50%|hidden|)" --اللون 'fg:#bbccdd,fg+:#ddeeff,bg:#334455,preview-bg:#223344,border:#778899'
راجع صفحة الدليل ( man fzf
) للحصول على القائمة الكاملة للخيارات.
يمكن العثور على المزيد من الأمثلة المتقدمة هنا.
تحذير
نظرًا لأن fzf عبارة عن مرشح نص للأغراض العامة وليس مكتشف ملفات، فليس من الجيد إضافة خيار --preview
إلى $FZF_DEFAULT_OPTS
.
# ********************# ** لا تفعل هذا! **# *********************تصدير FZF_DEFAULT_OPTS='-معاينة "bat --style=numbers --color=always --line-range :500 {}"'#bat لا يعمل مع أي إدخال بخلاف قائمة filesps -ef | fzf ما يلي 100 | تاريخ فزف | fzf
يمكن لـ fzf عرض الصور في نافذة المعاينة باستخدام أحد البروتوكولات التالية:
بروتوكول رسومات كيتي
بروتوكول الصور المضمنة iTerm2
سيكسل
راجع البرنامج النصي bin/fzf-preview.sh لمزيد من المعلومات.
fzf --معاينة 'fzf-preview.sh {}'
.gitignore
يمكنك استخدام fd أو ripgrep أو الباحث الفضي لاجتياز نظام الملفات مع احترام .gitignore
.
# قم بتغذية إخراج fd إلى fzffd --type f --strip-cwd-prefix | fzf# تعيين fd كمصدر افتراضي لـ fzfexport FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix'# الآن سيستخدم fzf (مع توجيه الإخراج) الأمر fd لإنشاء القائمةfzf# لتطبيق الأمر على CTRL-T وكذلك التصدير FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
إذا كنت تريد أن يتبع الأمر الروابط الرمزية ولا تريده أن يستبعد الملفات المخفية، فاستخدم الأمر التالي:
تصدير FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'
سيستخدم ربط مفتاح CTRL-T
للأسماك، على عكس ربطات bash وzsh، الرمز المميز الأخير في سطر الأوامر كدليل جذر للبحث العودي. على سبيل المثال، الضغط على CTRL-T
في نهاية سطر الأوامر التالي
ليرة سورية / فار /
سوف يسرد جميع الملفات والأدلة ضمن /var/
.
عند استخدام FZF_CTRL_T_COMMAND
مخصص، استخدم المتغير $dir
غير الموسع للاستفادة من هذه الميزة. $dir
الافتراضي هو .
عندما لا يكون الرمز الأخير دليلاً صالحًا. مثال:
set -g FZF_CTRL_T_COMMAND "الأمر find -L $dir -type f 2> /dev/null | sed '1d; s#^./##'"
fzf Theme Playground الذي أنشأه Vitor Mello عبارة عن صفحة ويب يمكنك من خلالها إنشاء سمات fzf بشكل تفاعلي.
https://github.com/junegunn/fzf/wiki/Related-projects
رخصة معهد ماساتشوستس للتكنولوجيا (MIT)
حقوق الطبع والنشر (ج) 2013-2024 Junegunn Choi