22 poin oleh GN⁺ 2026-05-11 | 1 komentar | Bagikan ke WhatsApp
  • Fuzzy finder baris perintah fzf memberi dampak yang langsung terasa dan nilai unik dibanding usaha yang dikeluarkan, tetapi banyak developer hanya memasangnya lalu menyerah karena tidak tahu cara memakainya
  • Mengganti pencarian riwayat Ctrl+R dengan fuzzy matching dan banyak pratinjau sehingga mengatasi ketidaknyamanan pendekatan lama yang mengandalkan kecocokan string yang persis
  • Dengan Alt+C, Anda bisa melakukan fuzzy cd meski hanya samar mengingat nama direktori, dan membangun workflow untuk langsung membuka file dengan kombinasi vi $(fzf)
  • Jika dihubungkan dengan ripgrep lewat pipe, Anda bisa melakukan fuzzy search pada setiap baris di semua file lalu langsung membuka file tersebut di editor
  • Alat ini meningkatkan produktivitas begitu cepat sampai-sampai bahkan heuristik 80/20 yang biasanya menyarankan mempelajari alat Unix lama lebih dulu pun jadi terasa kurang relevan

Nilai yang bisa langsung didapat setelah memasang fzf

  • Software engineer mudah membuat alat untuk memperbaiki pekerjaannya sendiri, tetapi jika terus berpindah-pindah antar alat tanpa mendalaminya, biayanya akan makin besar seiring waktu
  • Heuristik 80/20 yang baik adalah mempelajari dulu alat Unix lama seperti cat, ls, cd, grep, cut, dan dalam peran administrasi sistem modern ini juga mencakup sed dan awk
  • fzf bisa dianggap pengecualian terhadap heuristik ini karena dampaknya langsung terasa dan nilainya cukup unik
  • Intinya adalah fitur-fitur yang bisa langsung dipakai setelah memasang dengan skrip instalasi fzf pada lingkungan Ubuntu standar

Efek instan dari shortcut bawaan

  • Ctrl+R: mengubah riwayat perintah menjadi pencarian fuzzy

    • Di sebagian besar terminal Linux dan Windows, Ctrl+R menyediakan pencarian mundur untuk perintah
    • Ctrl+R bawaan membutuhkan kecocokan yang persis untuk menemukan perintah yang diinginkan, dan hanya menampilkan satu pratinjau dalam satu waktu sehingga satu karakter meleset saja bisa membuatnya sulit ditemukan
    • Setelah memasang fzf, beberapa shortcut keyboard ditimpa dengan perilaku yang lebih baik, dan Ctrl+R juga jauh meningkat dibanding cara lama
    • Jika dipasang lewat package manager seperti apt, integrasi shortcut ini mungkin tidak tersedia, dan itulah alasan memakai skrip instalasi fzf
  • Alt+C: cepat berpindah ke direktori yang hanya samar diingat

    • fzf mengubah Alt+C menjadi shortcut cd fuzzy yang ditingkatkan
    • Anda bisa cepat berpindah saat tidak ingat path direktori secara persis dan hanya ingat nama kasarnya saja
    • Berguna saat mencari repo atau direktori kerja yang sudah lama tidak dikunjungi dari terminal kosong

Perintah fzf itu sendiri dan kombinasinya dengan shell

  • fzf dasar

    • Menjalankan perintah fzf apa adanya akan melakukan pencarian fuzzy pada path file relatif berdasarkan direktori saat ini
    • Jika dipakai sendiri, kegunaannya tidak terlalu besar selain sekadar memilih lokasi file
  • vi $(fzf)

    • Jika digabung dengan command substitution seperti vi $(fzf), file yang dipilih lewat pencarian fuzzy bisa langsung dibuka di editor
    • Cara ini tidak khusus untuk vi; Anda juga bisa memakainya dengan editor pilihan seperti emacs, nano, code, dan lainnya
  • vi $(find . '/' | fzf)

    • Jika find . '/' | fzf digabung dengan editor, Anda bisa melakukan pencarian fuzzy di seluruh kandidat path untuk membuka file konfigurasi yang lokasinya tidak diketahui
    • Saat mencari file seperti nginx.conf yang lokasinya tidak Anda ingat, Anda tidak perlu menebak-nebak berdasarkan pengetahuan FHS atau menghafalnya; cukup pipe hasil find ke fzf
    • Jika mencari dengan conf$, Anda bisa memfilter hanya baris yang berakhir dengan conf
    • Jika find menemui banyak error Permission denied, fzf bisa tampak goyah sebentar tetapi akan pulih beberapa detik kemudian
    • Penundaan beberapa detik seperti ini adalah trade-off untuk kemudahan menemukan file konfigurasi dengan cara yang sangat sederhana
  • vi **<TAB>

    • Fitur dari komentar Hacker News milik sigmonsays ini berada di tengah-tengah antara penimpaan shortcut dan menjalankan fzf secara langsung, yaitu tab completion fuzzy dengan dua tanda bintang
    • vi **<TAB> bisa dipakai untuk memilih file dengan cara yang mirip vi $(fzf)
    • Setelah perintah benar-benar lengkap, Anda masih harus menekan Enter sekali lagi
    • Ini berjalan baik di bash dan zsh, tetapi di fish kadang tidak berfungsi
    • Jika Anda lebih mudah mengingat cara yang secara eksplisit memanggil $(fzf), mungkin fitur ini tidak akan terlalu sering dipakai

fzf untuk memindahkan file juga

  • mv $(fzf) $(fzf)

    • mv $(fzf) $(fzf) berguna saat Anda tidak ingat persis apa yang ingin dipindahkan dan ke mana tujuannya, tetapi masih ingat petunjuk yang sangat spesifik untuk masing-masing
    • Caranya adalah memilih objek yang akan dipindah dan tujuannya lewat dua kali pemilihan fzf
    • Ini bisa sering terpakai saat menata file, misalnya ketika menambahkan GIF ke README GitHub
    • Sebagai contoh terkait, ada README interactive mode milik finstem

Menggabungkan dengan rg untuk fuzzy search hingga isi file

  • rg: grep cepat dengan pencarian rekursif sebagai default

    • Kombinasi di bawah ini juga bisa dilakukan dengan grep, tetapi rg atau ripgrep unggul untuk penggunaan ini karena pencarian rekursif adalah perilaku default-nya
    • Jika ingin mengikuti contohnya, disarankan memasang dan memakai rg
  • rg . | fzf

    • rg . mengeluarkan setiap baris dari file sebagai hasil pencarian, lalu jika diteruskan ke fzf, Anda bisa melakukan pencarian fuzzy pada setiap baris di semua file
    • Artinya, petunjuk pencariannya bukan nama file, melainkan isi baris di dalam file
  • rg . | fzf | cut -d ":" -f 1

    • Jika hasil yang dipilih dari rg . | fzf ditambah cut -d ":" -f 1, Anda bisa mengembalikan field pertama berdasarkan titik dua, yaitu lokasi file
    • Ini adalah kombinasi untuk melakukan pencarian fuzzy pada isi baris lalu hanya mengambil path file yang memuat baris tersebut
  • vim $(rg . | fzf | cut -d ":" -f 1)

    • vim $(rg . | fzf | cut -d ":" -f 1) adalah kombinasi untuk melakukan pencarian fuzzy pada setiap baris di semua file, lalu membuka file yang memuat baris terpilih dengan vim
    • Saat Anda tidak ingat nama file tetapi masih ingat sebagian isinya, alur ini memungkinkan Anda langsung lanjut ke editor

1 komentar

 
GN⁺ 2026-05-11
Pendapat Lobste.rs
  • Rasanya pembaca sasaran tulisan ini memang tepat seperti saya. Saya memasang fzf, berpikir “wah, jenius”, lalu justru terus lupa memakainya, tapi sekarang mungkin saya akan mulai memakainya

    • Intinya adalah mengintegrasikannya ke konfigurasi shell yang sudah ada, skrip pribadi, dan alias. Saya selalu memakai fzf, tetapi hampir tidak pernah menjalankannya secara langsung
  • Ini mungkin tulisan yang bagus, tetapi kalau tujuannya menjawab “sekarang harus ngapain?”, memulai dari integrasi shell fzf malah terasa seperti menyasar pembaca yang lebih sempit
    Saya sudah terbiasa memakai ctrl-r di bash, jadi menyuruh menggantinya terasa menuntut terlalu banyak. Seharusnya dijelaskan dulu cara melatih perilaku yang sama tanpa mengganti default-nya

    • Sebenarnya ini lebih mirip default yang ditingkatkan. Memang sebaiknya dibiarkan menggantikan ctrl-r, dan setengah dari daya tarik utamanya adalah mempertahankan kebiasaan yang sudah melekat di tangan sambil mendapatkan pengalaman yang lebih kaya dengan alur yang nyaris sama seperti sebelumnya
      ctrl-r mungkin adalah perintah yang paling sering saya pakai, dan fzf adalah peningkatan yang langsung pas tanpa kurva belajar. Karena dijalankan lewat ctrl-r, saya juga jadi tidak lupa memakai fzf. Namun belakangan saya pindah ke Fish shell, dan di sana perilaku yang sama sudah tersedia secara bawaan
  • Saya sudah yakin. Saya akan segera menambahkan fzf dan integrasi shell-nya, dan hari ini saya belajar sesuatu

  • Saat mencari file untuk dimasukkan ke perintah, Anda juga bisa memakai shortcut ctrl-t. Saya sering memakainya bersama git saat memilih file yang akan dimasukkan ke perubahan tertentu, dan juga pernah memakainya untuk menyaring hasil keluaran grep agar mempersempit cakupan pencarian

  • Selain peningkatan pencarian riwayat shell, saya juga memakai fzf bersama dua alias berikut
    alias gbd='git -c color.ui=never branch | fzf | xargs -I {} git branch -D {}'
    Saya terutama memakainya untuk memilih daftar branch lokal yang akan dihapus setelah merge pull request. Mungkin ada cara yang lebih baik, tetapi sejauh ini belum pernah gagal
    alias awp='export AWS_PROFILE="$(grep -e "\[\(.*\)\]" ~/.aws/config | sed -e "s/\[//g" | sed -e "s/\]//g" | cut -d " " -f 2 | sort -u | fzf)"'
    Ini memungkinkan saya mengganti AWS_PROFILE dengan cepat berdasarkan nilai yang ada di ~/.aws/config. Sekarang saya jadi berpikir untuk membuat alias serupa guna mengganti namespace Kubernetes

  • Jika memakai plugin fzf.vim, Anda bisa menggunakan fzf di dalam vim. Bukan hanya untuk membuka file, tetapi juga untuk melakukan pencarian fuzzy pada buffer, riwayat perintah, isi file, dan lain-lain

  • Kegunaan utama fzf bagi saya adalah menelusuri dan mencari riwayat commit Git yang linear untuk memahami apa yang baru-baru ini berubah
    Di konfigurasi Git default saya, git fzf didefinisikan seperti ini

    [alias]  
      # Browse commit history with fzf  
      # Inspired by: https://chrismanbrown.gitlab.io/67.html  
      fzf = "!git log --oneline --color=always --decorate=short $@ | \  
          fzf --ansi --reverse --no-sort \  
            --preview 'git show --color=always {1}' \  
            --preview-window '<50(down)' \  
            --bind 'enter:become(git show {1})' #"  
    
  • Rasanya saya melewatkan sesuatu. Saya penasaran kenapa orang memasang fzf kalau bahkan belum tahu mau dipakai untuk apa

  • Ada juga tulisan terkait yang baru-baru ini muncul. Seorang pengguna memakai fzf sebagai pemilih file untuk jj
    https://lobste.rs/s/exlogg/jjj