Terima kasih khusus kepada:
Warp adalah terminal modern berbasis Rust dengan AI bawaan sehingga Anda dan tim dapat membuat perangkat lunak hebat dengan lebih cepat.
Kunjungi warp.dev untuk mempelajari lebih lanjut.
fzf adalah pencari fuzzy baris perintah untuk tujuan umum.
Ini adalah program filter interaktif untuk semua jenis daftar; file, riwayat perintah, proses, nama host, bookmark, git commit, dll. Ini mengimplementasikan algoritma pencocokan "fuzzy", sehingga Anda dapat dengan cepat mengetikkan pola dengan karakter yang dihilangkan dan tetap mendapatkan hasil yang Anda inginkan.
Portabel — Didistribusikan sebagai biner tunggal untuk memudahkan instalasi
Sangat cepat — Kode yang sangat optimal memproses jutaan item secara instan
Sangat serbaguna — Dapat disesuaikan sepenuhnya melalui mekanisme pengikatan tindakan peristiwa
Termasuk baterai — Termasuk integrasi dengan bash, zsh, fish, Vim, dan Neovim
Saya ingin mengucapkan terima kasih kepada semua sponsor proyek ini yang memungkinkan saya untuk terus meningkatkan fzf.
Jika Anda ingin mensponsori proyek ini, silakan kunjungi https://github.com/sponsors/junegunn.
Instalasi
Menggunakan Homebrew
paket Linux
Paket Windows
Menggunakan git
Rilis biner
Menyiapkan integrasi shell
Plugin Vim/Neovim
Meningkatkan fzf
Membangun fzf
Penggunaan
--mode --height
--tmux
Menggunakan penemu
Mode tampilan
Sintaks pencarian
Variabel lingkungan
Pilihan
Demo
Contoh
Pengikatan kunci untuk baris perintah
Penyelesaian fuzzy untuk bash dan zsh
File dan direktori
ID Proses
Nama tuan rumah
Variabel lingkungan / Alias
Pengaturan
Perintah yang didukung
Penyelesaian fuzzy khusus
plugin vim
Topik lanjutan
1. Perbarui daftar proses dengan menekan CTRL-R
2. Beralih antar sumber dengan menekan CTRL-D atau CTRL-F
3. Integrasi ripgrep interaktif
Pertunjukan
Menjalankan program eksternal
Berubah menjadi proses yang berbeda
Memuat ulang daftar kandidat
Jendela pratinjau
Pratinjau gambar
Kiat
Menghormati .gitignore
Cangkang ikan
Taman Bermain Tema fzf
Proyek terkait
Lisensi
Anda dapat menggunakan Homebrew (di macOS atau Linux) untuk menginstal fzf.
pembuatan bir instal fzf
Penting
Untuk menyiapkan integrasi shell (pengikatan kunci dan penyelesaian fuzzy), lihat petunjuk di bawah.
fzf juga tersedia melalui MacPorts: sudo port install fzf
Manajer Paket | Distribusi Linux | Memerintah |
---|---|---|
APK | Linux Alpen | sudo apk add fzf |
TEPAT | Debian 9+/Ubuntu 19.10+ | sudo apt install fzf |
Konda | conda install -c conda-forge fzf | |
DNF | fedora | sudo dnf install fzf |
Nix | NixOS, dll. | nix-env -iA nixpkgs.fzf |
Pacman | Lengkungan Linux | sudo pacman -S fzf |
pkg | FreeBSD | pkg install fzf |
pkgin | NetBSD | pkgin install fzf |
pkg_tambahkan | OpenBSD | pkg_add fzf |
portage | Gentoo | emerge --ask app-shells/fzf |
Kekek | spack install fzf | |
XBPS | Batalkan Linux | sudo xbps-install -S fzf |
Zypper | openSUSE | sudo zypper install fzf |
Penting
Untuk menyiapkan integrasi shell (pengikatan kunci dan penyelesaian fuzzy), lihat petunjuk di bawah.
Di Windows, fzf tersedia melalui Chocolatey, Scoop, Winget, dan MSYS2:
Manajer paket | Memerintah |
---|---|
coklat | choco install fzf |
Sendok | scoop install fzf |
Sayap | winget install fzf |
MSYS2 (pacman) | pacman -S $MINGW_PACKAGE_PREFIX-fzf |
Alternatifnya, Anda dapat "git clone" repositori ini ke direktori mana pun dan menjalankan skrip instalasi.
git clone --kedalaman 1 https://github.com/junegunn/fzf.git ~/.fzf~/.fzf/install
Skrip instalasi akan menambahkan baris ke file konfigurasi shell Anda untuk memodifikasi $PATH
dan mengatur integrasi shell.
Anda dapat mengunduh binari fzf resmi dari halaman rilis.
https://github.com/junegunn/fzf/releases
Tambahkan baris berikut ke file konfigurasi shell Anda.
pesta
# Siapkan pengikatan kunci fzf dan penyelesaian fuzzy "$(fzf --bash)"
zsh
# Siapkan pengikatan kunci fzf dan sumber penyelesaian fuzzy <(fzf --zsh)
ikan
# Siapkan pengikatan kunci fzffzf --fish | sumber
Catatan
Opsi --bash
, --zsh
, dan --fish
hanya tersedia di fzf 0.48.0 atau lebih baru. Jika Anda memiliki versi fzf yang lebih lama, atau menginginkan kontrol yang lebih baik, Anda dapat mengambil file skrip individual di direktori /shell. Lokasi file mungkin berbeda-beda tergantung pada manajer paket yang Anda gunakan. Silakan merujuk ke dokumentasi paket untuk informasi lebih lanjut. (misalnya apt show fzf
)
Tip
Anda dapat menonaktifkan pengikatan CTRL-T atau ALT-C dengan mengatur FZF_CTRL_T_COMMAND
atau FZF_ALT_C_COMMAND
ke string kosong saat mencari sumber skrip. Misalnya, untuk menonaktifkan pengikatan ALT-C:
pesta: FZF_ALT_C_COMMAND= eval "$(fzf --bash)"
zsh: FZF_ALT_C_COMMAND= source <(fzf --zsh)
ikan: fzf --fish | FZF_ALT_C_COMMAND= source
Menyetel variabel setelah mendapatkan skrip tidak akan berpengaruh.
Jika Anda menggunakan vim-plug, tambahkan ini ke file konfigurasi Vim Anda:
Pasang 'junegunn/fzf', { 'lakukan': { -> fzf#install() } } Pasang 'junegunn/fzf.vim'
junegunn/fzf
menyediakan fungsi perpustakaan dasar
fzf#install()
memastikan Anda memiliki biner terbaru
junegunn/fzf.vim
adalah proyek terpisah yang menyediakan berbagai perintah berguna
Untuk mempelajari lebih lanjut tentang integrasi Vim, lihat README-VIM.md.
Tip
Jika Anda menggunakan Neovim dan lebih memilih plugin berbasis Lua, lihat fzf-lua.
fzf sedang dikembangkan secara aktif, dan Anda mungkin ingin memutakhirkannya sesekali. Silakan ikuti instruksi di bawah ini tergantung pada metode instalasi yang digunakan.
git: cd ~/.fzf && git pull && ./install
minuman: brew update; brew upgrade fzf
macports: sudo port upgrade fzf
coklat: choco upgrade fzf
vim-plug: :PlugUpdate fzf
Lihat MEMBANGUN.md.
fzf akan meluncurkan pencari interaktif, membaca daftar dari STDIN, dan menulis item yang dipilih ke STDOUT.
temukan * -ketik f | fzf > dipilih
Tanpa pipa STDIN, fzf akan melintasi sistem file di bawah direktori saat ini untuk mendapatkan daftar file.
vim $(fzf)
Catatan
Anda dapat mengganti perilaku default
Baik dengan menyetel $FZF_DEFAULT_COMMAND
ke perintah yang menghasilkan daftar yang diinginkan
Atau dengan menyetel opsi --walker
, --walker-root
, dan --walker-skip
di $FZF_DEFAULT_OPTS
Peringatan
Solusi yang lebih kuat adalah dengan menggunakan xargs
tetapi kami telah menyajikan solusi di atas karena lebih mudah dipahami
fzf --cetak0 | xargs -0 -o vim
Tip
fzf juga memiliki kemampuan untuk mengubah dirinya menjadi proses yang berbeda.
fzf --bind 'masuk:menjadi(vim {})'
Lihat Berubah menjadi proses yang berbeda untuk informasi lebih lanjut.
CTRL-K
/ CTRL-J
(atau CTRL-P
/ CTRL-N
) untuk memindahkan kursor ke atas dan ke bawah
Tombol Enter
untuk memilih item, CTRL-C
/ CTRL-G
/ ESC
untuk keluar
Pada mode multi-pilih ( -m
), TAB
dan Shift-TAB
untuk menandai banyak item
Ikatan kunci gaya Emacs
Mouse: gulir, klik, klik dua kali; shift-klik dan shift-scroll pada mode multi-pilih
fzf secara default berjalan dalam mode layar penuh, tetapi ada mode tampilan lainnya.
--height
Dengan --height HEIGHT[%]
, fzf akan dimulai di bawah kursor dengan ketinggian tertentu.
fzf --tinggi 40%
tata letak reverse
dan --border
cocok dengan opsi ini.
fzf --tinggi 40% --tata letak terbalik --perbatasan
Dengan menambahkan ~
ke ketinggian, Anda menyetel ketinggian maksimum.
# Akan mengambil baris sesedikit mungkin untuk menampilkan listseq 3 | fzf --tinggi ~100% seq 3000 | fzf --tinggi ~100%
Nilai tinggi badan bisa berupa angka negatif.
# Tinggi layar - 3fzf --tinggi -3
--tmux
Dengan opsi --tmux
, fzf akan dimulai dalam popup tmux.
# --tmux [tengah|atas|bawah|kiri|kanan][,SIZE[%]][,SIZE[%]]fzf --tmux center # Tengah, lebar dan tinggi 50%fzf --tmux 80% # Tengah, 80% lebar dan tinggifzf --tmux 100%,50% # Tengah, 100% lebar dan 50% tinggifzf --tmux kiri,40% # Kiri, 40% lebarfzf --tmux kiri,40%,90% # Kiri, 40% lebar, 90% tinggifzf --tmux atas,40% # Atas, 40% tinggifzf --tmux bawah,80% ,40% # Bawah, tinggi 80%, tinggi 40%.
--tmux
diabaikan secara diam-diam saat Anda tidak menggunakan tmux.
Catatan
Jika Anda terjebak dengan tmux versi lama yang tidak mendukung popup, atau jika Anda ingin membuka fzf di panel tmux biasa, lihat skrip fzf-tmux.
Tip
Anda dapat menambahkan opsi ini ke $FZF_DEFAULT_OPTS
sehingga diterapkan secara default. Misalnya,
# Buka di popup tmux jika di tmux, jika tidak gunakan --height modeexport FZF_DEFAULT_OPTS='--height 40% --tmux bottom,40% --layout reverse --border top'
Kecuali ditentukan lain, fzf dimulai dalam "mode pencarian diperpanjang" di mana Anda dapat mengetikkan beberapa istilah pencarian yang dibatasi oleh spasi. misalnya ^music .mp3$ sbtrkt !fire
Token | Jenis kecocokan | Keterangan |
---|---|---|
sbtrkt | pertandingan fuzzy | Barang sesuai sbtrkt |
'wild | pencocokan tepat (dikutip) | Item yang termasuk wild |
'wild' | pencocokan batas tepat (dikutip kedua ujungnya) | Item yang termasuk wild pada batasan kata |
^music | awalan-pencocokan persis | Item yang dimulai dengan music |
.mp3$ | akhiran-pencocokan persis | Item yang diakhiri dengan .mp3 |
!fire | pencocokan terbalik-tepat | Barang yang tidak termasuk fire |
!^music | pencocokan persis dengan awalan terbalik | Item yang tidak dimulai dengan music |
!.mp3$ | pencocokan persis akhiran terbalik | Item yang tidak diakhiri dengan .mp3 |
Jika Anda tidak menyukai pencocokan fuzzy dan tidak ingin "mengutip" setiap kata, mulailah fzf dengan opsi -e
atau --exact
. Perhatikan bahwa ketika --exact
disetel, '
-prefix "membatalkan tanda kutip" istilah tersebut.
Istilah karakter batang tunggal bertindak sebagai operator OR. Misalnya, kueri berikut cocok dengan entri yang dimulai dengan core
dan diakhiri dengan go
, rb
, atau py
.
^core go$ | rb$ | py$
FZF_DEFAULT_COMMAND
Perintah default untuk digunakan ketika input adalah tty
misalnya export FZF_DEFAULT_COMMAND='fd --type f'
FZF_DEFAULT_OPTS
Opsi bawaan
misalnya export FZF_DEFAULT_OPTS="--layout=reverse --inline-info"
FZF_DEFAULT_OPTS_FILE
Jika Anda lebih suka mengelola opsi default dalam sebuah file, atur variabel ini agar menunjuk ke lokasi file
misalnya export FZF_DEFAULT_OPTS_FILE=~/.fzfrc
Peringatan
FZF_DEFAULT_COMMAND
tidak digunakan oleh integrasi shell karena sedikit perbedaan dalam persyaratan.
CTRL-T
menjalankan $FZF_CTRL_T_COMMAND
untuk mendapatkan daftar file dan direktori
ALT-C
menjalankan $FZF_ALT_C_COMMAND
untuk mendapatkan daftar direktori
vim ~/**
menjalankan fzf_compgen_path()
dengan awalan ( ~/
) sebagai argumen pertama
cd foo**
menjalankan fzf_compgen_dir()
dengan awalan ( foo
) sebagai argumen pertama
Opsi yang tersedia dijelaskan nanti dalam dokumen ini.
Lihat halaman manual ( man fzf
) untuk daftar opsi lengkap.
Jika Anda belajar dengan menonton video, lihat screencast oleh @samoshkin ini untuk menjelajahi fitur fzf
.
Halaman contoh Wiki
Penafian: Contoh di halaman ini dikelola oleh komunitas dan tidak diuji secara menyeluruh
Contoh fzf tingkat lanjut
Dengan menyiapkan integrasi shell, Anda dapat menggunakan pengikatan kunci berikut di bash, zsh, dan fish.
CTRL-T
- Tempel file dan direktori yang dipilih ke baris perintah
Anda dapat mengganti perilaku tersebut dengan mengatur FZF_CTRL_T_COMMAND
ke perintah khusus yang menghasilkan daftar yang diinginkan
Atau Anda dapat mengatur opsi --walker*
di FZF_CTRL_T_OPTS
Daftar ini dibuat menggunakan opsi --walker file,dir,follow,hidden
Setel FZF_CTRL_T_OPTS
untuk meneruskan opsi tambahan ke fzf
# Pratinjau konten file menggunakan bat (https://github.com/sharkdp/bat)export FZF_CTRL_T_OPTS=" --walker-skip .git,node_modules,target --preview 'bat -n --color=always {}' - -bind 'ctrl-/:change-preview-window(turun|tersembunyi|)'"
Dapat dinonaktifkan dengan mengatur FZF_CTRL_T_COMMAND
ke string kosong saat mencari sumber skrip
CTRL-R
- Tempelkan perintah yang dipilih dari riwayat ke baris perintah
Jika Anda ingin melihat perintah dalam urutan kronologis, tekan lagi CTRL-R
yang akan mengaktifkan pengurutan berdasarkan relevansi
Tekan CTRL-/
atau ALT-/
untuk mengganti pembungkusan garis
Setel FZF_CTRL_R_OPTS
untuk meneruskan opsi tambahan ke fzf
# CTRL-Y untuk menyalin perintah ke clipboard menggunakan pbcopyexport FZF_CTRL_R_OPTS=" --bind 'ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort' --color header:italic --header 'Tekan CTRL-Y untuk menyalin perintah ke clipboard'"
ALT-C
- cd ke direktori yang dipilih
Atau Anda dapat mengatur opsi --walker-*
di FZF_ALT_C_OPTS
Daftar ini dibuat menggunakan opsi --walker dir,follow,hidden
Setel FZF_ALT_C_COMMAND
untuk mengganti perintah default
Setel FZF_ALT_C_OPTS
untuk meneruskan opsi tambahan ke fzf
# Cetak struktur pohon di jendela pratinjauekspor FZF_ALT_C_OPTS=" --walker-skip .git,node_modules,target --preview 'tree -C {}'"
Dapat dinonaktifkan dengan mengatur FZF_ALT_C_COMMAND
ke string kosong saat mencari sumber skrip
Mode tampilan untuk pengikatan ini dapat dikonfigurasi secara terpisah melalui FZF_{CTRL_T,CTRL_R,ALT_C}_OPTS
atau secara global melalui FZF_DEFAULT_OPTS
. (misal FZF_CTRL_R_OPTS='--tmux bottom,60% --height 60% --border top'
)
Tips lebih lanjut dapat ditemukan di halaman wiki.
Penyelesaian fuzzy untuk file dan direktori dapat dipicu jika kata sebelum kursor diakhiri dengan urutan pemicu, yang secara default adalah **
.
COMMAND [DIRECTORY/][FUZZY_PATTERN]**
# File di bawah direktori saat ini# - Anda dapat memilih beberapa item dengan TAB keyvim **# File di bawah direktori indukvim ../** # File di bawah direktori induk yang cocok dengan `fzf`vim ../fzf* * # File di bawah direktori home Andavim ~/** # Direktori di bawah direktori saat ini (pilihan tunggal)cd ** # Direktori di bawah ~/github yang cocok `fzf`cd ~/github/fzf**
Penyelesaian fuzzy untuk PID disediakan untuk perintah kill.
# Dapat memilih beberapa proses dengan keterampilan tombolatau -9 **
Untuk perintah ssh dan telnet, penyelesaian fuzzy untuk nama host disediakan. Nama-nama tersebut diekstraksi dari /etc/hosts dan ~/.ssh/config.
ssh **telnet **
batalkan **ekspor ** unalias **
# Gunakan ~~ sebagai urutan pemicu alih-alih default **export FZF_COMPLETION_TRIGGER='~~'# Opsi untuk perintah fzfexport FZF_COMPLETION_OPTS='--border --info=inline'# Gunakan fd (https://github.com/ sharkdp/fd) untuk mendaftar kandidat jalur.# - Argumen pertama ke fungsi ($1) adalah jalur dasar untuk memulai traversal# - Lihat kode sumber (penyelesaian.{bash,zsh}) untuk detailnya._fzf_compgen_path() { fd --hidden --follow --exclude ".git" . "$1"}# Gunakan fd untuk membuat daftar penyelesaian direktori_fzf_compgen_dir() { fd --type d --hidden --follow --exclude ".git" . "$1"}# Kustomisasi lanjutan opsi fzf melalui fungsi _fzf_comprun# - Argumen pertama pada fungsi adalah nama perintah.# - Anda harus memastikan untuk meneruskan argumen lainnya ke fzf._fzf_comprun() { perintah lokal =$1 menggeser case "$command" incd) fzf --pratinjau 'pohon -C {} | kepala -200'"$@" ;; ekspor|tidak disetel) fzf --pratinjau "eval 'echo $'{}" "$@" ;; ssh) fzf --pratinjau 'gali {}' "$@" ;;*) fzf --pratinjau 'bat -n --color=selalu {}' "$@" ;; esac}
Di bash, penyelesaian fuzzy diaktifkan hanya untuk serangkaian perintah yang telah ditentukan sebelumnya ( complete | grep _fzf
untuk melihat daftarnya). Namun Anda juga dapat mengaktifkannya untuk perintah lain dengan menggunakan fungsi pembantu _fzf_setup_completion
.
# penggunaan: _fzf_setup_completion path|dir|var|alias|host PERINTAH..._fzf_setup_completion path ag git kubectl _fzf_setup_completion pohon direktori
(API penyelesaian khusus bersifat eksperimental dan dapat berubah)
Untuk perintah bernama "COMMAND" , tentukan fungsi _fzf_complete_COMMAND
menggunakan pembantu _fzf_complete
.
# Penyelesaian fuzzy khusus untuk perintah "doge"# misalnya doge **_fzf_complete_doge() { _fzf_complete --multi --reverse --prompt="doge> " -- "$@" < <( echo sangat echo wow echo seperti echo doge )}
Argumen sebelumnya --
adalah opsi untuk fzf.
Setelah --
, cukup berikan argumen penyelesaian asli tanpa perubahan ( "$@"
).
Kemudian, tulis sekumpulan perintah yang menghasilkan kandidat penyelesaian dan memasukkan outputnya ke fungsi menggunakan substitusi proses ( < <(...)
).
zsh akan secara otomatis mengambil fungsi menggunakan konvensi penamaan tetapi di bash Anda harus mengaitkan fungsi tersebut secara manual dengan perintah menggunakan perintah complete
.
[ -n "$BASH" ] && selesai -F _fzf_complete_doge -o default -o bashdefault doge
Jika Anda perlu melakukan pasca-proses keluaran dari fzf, tentukan _fzf_complete_COMMAND_post
sebagai berikut.
_fzf_lengkap_foo() { _fzf_complete --multi --reverse --header-lines=3 -- "$@" < <( ls -al )}_fzf_complete_foo_post() { awk '{cetak $NF}'} [ -n "$BASH" ] && selesai -F _fzf_complete_foo -o default -o bashdefault foo
Lihat README-VIM.md.
fzf cepat. Performa seharusnya tidak menjadi masalah di sebagian besar kasus penggunaan. Namun, Anda mungkin ingin mengetahui opsi yang dapat memengaruhi kinerja.
--ansi
memberitahu fzf untuk mengekstrak dan mengurai kode warna ANSI dalam input, dan ini membuat pemindaian awal lebih lambat. Jadi tidak disarankan Anda menambahkannya ke $FZF_DEFAULT_OPTS
Anda.
--nth
membuat fzf lebih lambat karena harus memberi token pada setiap baris.
--with-nth
membuat fzf lebih lambat karena fzf harus memberi token dan memasang kembali setiap baris.
Anda dapat mengatur pengikatan kunci untuk memulai proses eksternal tanpa meninggalkan fzf ( execute
, execute-silent
).
# Tekan F1 untuk membuka file dengan less tanpa meninggalkan fzf# Tekan CTRL-Y untuk menyalin baris ke clipboard dan batalkan fzf (membutuhkan pbcopy)fzf --bind 'f1:execute(less -f {}),ctrl-y: eksekusi-diam(echo {} | pbcopy)+batalkan'
Lihat bagian KEY BINDINGS pada halaman manual untuk detailnya.
become(...)
mirip dengan execute(...)
/ execute-silent(...)
yang dijelaskan di atas, tetapi alih-alih menjalankan perintah dan kembali ke fzf setelah selesai, ini malah mengubah fzf menjadi proses baru untuk memerintah.
fzf --bind 'masuk:menjadi(vim {})'
Dibandingkan dengan substitusi perintah yang tampaknya setara vim "$(fzf)"
, pendekatan ini memiliki beberapa keunggulan:
Vim tidak akan membuka file kosong ketika Anda menghentikan fzf dengan CTRL-C
Vim tidak akan membuka file kosong ketika Anda menekan ENTER pada hasil yang kosong
Dapat menangani banyak pilihan meskipun memiliki spasi
fzf --multi --bind 'masuk:menjadi(vim {+})'
Agar adil, jalankan fzf --print0 | xargs -0 -o vim
alih-alih vim "$(fzf)"
menyelesaikan semua masalah yang disebutkan. Meskipun demikian, become(...)
masih menawarkan manfaat tambahan dalam skenario yang berbeda.
Anda dapat mengatur beberapa pengikatan untuk menangani hasilnya dengan cara yang berbeda tanpa skrip pembungkus apa pun
fzf --bind 'masuk:menjadi(vim {}),ctrl-e:menjadi(emacs {})'
Sebelumnya, Anda harus menggunakan --expect=ctrl-e
dan memeriksa baris pertama keluaran fzf
Anda dapat dengan mudah membuat perintah selanjutnya menggunakan ekspresi indeks bidang fzf
# Buka file di Vim dan buka linegit grep --line-number . |fzf --delimiter : --nth 3.. --bind 'enter:menjadi(vim {1} +{2})'
Dengan mengikat tindakan reload
ke kunci atau peristiwa, Anda dapat membuat fzf memuat ulang daftar kandidat secara dinamis. Lihat #1750 untuk lebih jelasnya.
ps -ef | fzf --bind 'ctrl-r:muat ulang(ps -ef)' --header 'Tekan CTRL-R untuk memuat ulang' --header-lines=1 --tinggi=50% --tata letak=mundur
FZF_DEFAULT_COMMAND='temukan . -tipe f' fzf --bind 'ctrl-d:reload(find . -type d),ctrl-f:reload(eval "$FZF_DEFAULT_COMMAND")' --tinggi=50% --tata letak=mundur
Contoh berikut menggunakan fzf sebagai antarmuka pemilih untuk ripgrep. Kami mengikat tindakan reload
untuk change
acara, jadi setiap kali Anda mengetik fzf, proses ripgrep akan dimulai ulang dengan string kueri yang diperbarui yang dilambangkan dengan ekspresi placeholder {q}
. Perhatikan juga bahwa kami menggunakan opsi --disabled
sehingga fzf tidak melakukan pemfilteran sekunder apa pun.
: | rg_prefix='rg --column --line-number --no-heading --color=selalu --smart-case' fzf --bind 'mulai:muat ulang:$rg_prefix ""' --bind 'perubahan:muat ulang:$rg_prefix {q} || BENAR' --bind 'masuk:menjadi(vim {1} +{2})' --ansi --dinonaktifkan --tinggi=50% --tata letak=mundur
Jika ripgrep tidak menemukan kecocokan apa pun, ripgrep akan keluar dengan status keluar bukan nol, dan fzf akan memperingatkan Anda tentang hal itu. Untuk menyembunyikan pesan peringatan, kami menambahkan || true
dengan perintahnya, sehingga selalu keluar dengan 0.
Lihat "Menggunakan fzf sebagai peluncur Ripgrep interaktif" untuk contoh yang lebih canggih.
Ketika opsi --preview
disetel, fzf secara otomatis memulai proses eksternal dengan baris saat ini sebagai argumen dan menampilkan hasilnya di jendela terpisah. $SHELL
Anda digunakan untuk menjalankan perintah dengan $SHELL -c COMMAND
. Jendela dapat digulir menggunakan mouse atau pengikatan tombol khusus.
# {} diganti dengan string tanda kutip tunggal dari linefzf --preview 'cat {}' yang terfokus
Jendela pratinjau mendukung warna ANSI, sehingga Anda dapat menggunakan program apa pun yang menyorot konten file dengan sintaks, seperti Bat atau Highlight:
fzf --pratinjau 'kelelawar --warna=selalu {}' --pratinjau-jendela '~3'
Anda dapat menyesuaikan ukuran, posisi, dan batas jendela pratinjau menggunakan opsi --preview-window
, serta warna latar depan dan latar belakang dengan opsi --color
. Misalnya,
fzf --tinggi 40% --tata letak terbalik --info sebaris --border --pratinjau 'file {}' --pratinjau-jendela atas,1,batas-horizontal --bind 'ctrl-/:ubah-jendela pratinjau(50%|tersembunyi|)' --warna 'fg:#bbccdd,fg+:#ddeeff,bg:#334455,pratinjau-bg:#223344,batas:#778899'
Lihat halaman manual ( man fzf
) untuk daftar opsi lengkap.
Contoh lebih lanjut dapat ditemukan di sini.
Peringatan
Karena fzf adalah filter teks tujuan umum dan bukan pencari file, bukanlah ide yang baik untuk menambahkan opsi --preview
ke $FZF_DEFAULT_OPTS
Anda .
# *********************# ** JANGAN LAKUKAN INI! **# *********************ekspor FZF_DEFAULT_OPTS='--pratinjau "bat --style=numbers --color=selalu --line-range :500 {}"'# bat tidak berfungsi dengan input apa pun selain daftar fileps -ef | fzf seq 100 | sejarah fzf | fzf
fzf dapat menampilkan gambar di jendela pratinjau menggunakan salah satu protokol berikut:
Protokol grafis Kitty
Protokol gambar sebaris iTerm2
Enamel
Lihat skrip bin/fzf-preview.sh untuk informasi lebih lanjut.
fzf --pratinjau 'fzf-preview.sh {}'
.gitignore
Anda dapat menggunakan fd, ripgrep, atau pencari perak untuk melintasi sistem file dengan tetap menghormati .gitignore
.
# Masukkan keluaran fd ke dalam fzffd --type f --strip-cwd-prefix | fzf# Menetapkan fd sebagai sumber default untuk fzfexport FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix'# Sekarang fzf (tanpa pipa) akan menggunakan perintah fd untuk menghasilkan daftarfzf# Untuk menerapkan perintah ke CTRL-T sertaekspor FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
Jika Anda ingin perintah mengikuti tautan simbolik dan tidak ingin mengecualikan file tersembunyi, gunakan perintah berikut:
ekspor FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'
Pengikatan kunci ikan CTRL-T
, tidak seperti bash dan zsh, akan menggunakan token terakhir pada baris perintah sebagai direktori root untuk pencarian rekursif. Misalnya, menekan CTRL-T
di akhir baris perintah berikut
aku /var/
akan mencantumkan semua file dan direktori di bawah /var/
.
Saat menggunakan FZF_CTRL_T_COMMAND
khusus, gunakan variabel $dir
yang tidak diperluas untuk memanfaatkan fitur ini. $dir
defaultnya adalah .
ketika token terakhir bukan direktori yang valid. Contoh:
set -g FZF_CTRL_T_COMMAND "perintah temukan -L $dir -type f 2> /dev/null | sed '1d; s#^./##'"
fzf Theme Playground yang dibuat oleh Vitor Mello adalah halaman web tempat Anda dapat membuat tema fzf secara interaktif.
https://github.com/junegunn/fzf/wiki/Related-projects
Lisensi MIT (MIT)
Hak Cipta (c) 2013-2024 Junegunn Choi