Belajar Fzf - Navigasi & Keybindings Dasar
Episode 5 of 23

Belajar Fzf - Navigasi & Keybindings Dasar

Menguasai navigasi dan keybindings dasar fzf: bergerak di daftar item dengan vim-style keys dan jump mode, mengedit query dengan shortcut readline, hingga memilih dan keluar dengan benar termasuk multi-select.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Setelah di episode 4 kalian merancang tampilan fzf — height, layout, border, prompt, hingga warna — sekarang saatnya belajar bergerak cepat di dalamnya. Episode ini membahas navigasi & keybindings dasar: cara menjelajahi daftar item, cara mengedit query yang sedang diketik, dan cara memilih lalu keluar dengan benar — termasuk mode multi-select.

Satu prinsip akan menyatukan semuanya: fzf mengadopsi dua bahasa yang sudah kalian kenal. Untuk bergerak di daftar, fzf memakai bahasa Vim (j/k). Untuk mengedit query, fzf memakai bahasa readline (Ctrl+A, Ctrl+E, dan seterusnya) — bahasa yang sama dengan shell kalian. Kalau kalian sudah nyaman di salah satunya, setengah pekerjaan sudah selesai.

Konsep: Dua Wilayah Fokus

Antarmuka fzf memiliki dua wilayah yang responnya berbeda terhadap tombol: daftar item dan query. Ketika fokus ada di daftar, tombol j/k memindahkan pointer; ketika kalian mengetik, tombol yang sama masuk ke query sebagai huruf. Inilah kenapa fzf terasa "pintar": kalian tidak perlu menekan tombol mode untuk berpindah antara mengetik dan bernavigasi — kalian cukup mengetik untuk mencari, dan menekan tombol panah saat ingin bergerak di hasil.

Siapkan dataset untuk berlatih
printf "episode-0\nepisode-1\nepisode-2\nepisode-3\nepisode-4\nepisode-5\n" | fzf --height=40% --border

Gunakan dataset di atas untuk mencoba semua keybinding di episode ini. Ketik episode untuk mempersempit daftar, lalu gerakkan pointer — sekarang kalian sedang berlatih di dua wilayah sekaligus.

Keybinding berikut menggerakkan pointer di daftar item:

TombolFungsi
j / Ctrl+JPindah ke item berikutnya (bawah)
k / Ctrl+KPindah ke item sebelumnya (atas)
PageUpLompat ke atas satu halaman
PageDownLompat ke bawah satu halaman
HomeLangsung ke item pertama
EndLangsung ke item terakhir
Ctrl+SpaceMasuk mode jump

Perhatikan bahwa Ctrl+J dan Ctrl+K adalah padanan dari j dan k — berguna di terminal yang mengubah Ctrl+J menjadi newline. Saat daftar hanya tersisa sedikit item, j/k terasa paling nyaman; saat daftar panjang, PageDown dan End jauh lebih efisien daripada menekan j dua puluh kali.

Jump Mode: Melompat seperti Vim

Ada satu fitur yang sering terlewat padahal sangat kuat: jump mode, diaktifkan dengan Ctrl+Space. Setelah diaktifkan, fzf menampilkan label huruf di depan tiap item yang terlihat — mirip easy-motion di Vim:

InputFungsi
Ctrl+SpaceMasuk jump mode; tampilkan label huruf di depan item
a-zLangsung lompat ke item berlabel huruf tersebut

Begitu jump mode aktif, ketik huruf yang tampil di depan item tujuan — pointer langsung melompat ke sana tanpa perlu menekan panah berulang-ulang. Untuk daftar panjang yang sudah disaring jadi beberapa item, jump mode mengubah dua puluh penekanan tombol menjadi satu. Custom keybindings untuk varian jump-accept (lompat sekaligus terima) akan kita pelajari di episode yang membahas custom keybindings.

Untuk merasakan bedanya, coba pada dataset latihan di atas: tanpa jump mode, tekan End lalu k empat kali untuk mencapai item kedua; dengan jump mode, tekan Ctrl+Space lalu satu huruf. Sekali terasa, jump mode akan menjadi refleks.

Mengedit Query

Query di fzf berperilaku seperti baris perintah mini — dan di sinilah bahasa readline berperan:

TombolFungsi
Ctrl+APindah kursor ke awal query
Ctrl+EPindah kursor ke akhir query
Ctrl+FMaju satu karakter
Ctrl+BMundur satu karakter
Ctrl+UHapus dari kursor sampai awal query
Ctrl+WHapus satu kata di belakang kursor
Ctrl+YTempel kembali (yank) hasil hapusan
Mengedit query yang panjang
printf "build\nbuild-images\nbuild-cache\nbuildx\n" | fzf --height=40% --border

Coba ketik build-cache, lalu tekan Ctrl+A (kursor ke awal), Ctrl+W (hapus kata pertama, build-), lalu Ctrl+Y untuk menempelkannya kembali. Ctrl+U menghapus seluruh query sekaligus — cara tercepat untuk memulai dari nol — dan Ctrl+Y mengembalikannya jika kalian berubah pikiran. Kombinasi ini terasa seperti mengetik di shell biasa, karena memang itu bahasanya.

Memilih dan Keluar

Setelah item yang diinginkan aktif, waktunya memilih dan keluar. Empat tombol paling penting di seluruh fzf:

TombolFungsi
EnterTerima item aktif; cetak ke stdout; keluar dengan kode 0
EscBatalkan tanpa memilih; keluar dengan kode 1
Ctrl+CInterupsi; keluar dengan kode 130
TabToggle pilih item aktif (butuh mode multi-select)
Shift+TabToggle hapus item aktif dari pilihan

Ingat bahasa exit code dari episode 2? Di sinilah ia beraksi: Enter berarti 0 (ada yang dipilih), Esc berarti 1 (tidak ada yang dipilih), dan Ctrl+C berarti 130 (dibatalkan). Script yang memakai fzf || exit 1 mengandalkan perbedaan ini untuk mengambil keputusan.

Multi-Select dengan Tab

Untuk memilih lebih dari satu item, fzf harus dijalankan dengan opsi --multi:

Multi-select dengan Tab
printf "a\nb\nc\nd\n" | fzf --multi --height=40% --border

Sekarang Tab menandai item aktif sebagai terpilih (ditandai dengan simbol marker yang kita atur di episode 4), dan Shift+Tab membatalkan tanda tersebut. Setelah menekan Enter, fzf mencetak semua item terpilih — satu per baris — ke stdout, siap diteruskan ke perintah berikutnya, misalnya fzf --multi | xargs rm. Berhati-hatilah dengan perintah terakhir itu: sekali Enter, tidak ada tombol undo.

Tip

Urutan kerja multi-select yang sering dipakai: ketik pola untuk menyaring, tekan Tab pada beberapa item yang diinginkan, tekan Enter untuk mengumpulkan semuanya. Jika salah tanda, Shift+Tab membatalkan — dan Ctrl+U pada query tidak akan menyelamatkan pilihan yang sudah ditandai, karena pilihan terpisah dari query.

Penutup

Pada episode 5 ini, kalian telah menguasai navigasi dan keybindings dasar fzf: dua wilayah fokus (daftar dan query), navigasi dengan j/k, PageUp/PageDown, Home/End, dan jump mode lewat Ctrl+Space, pengeditan query dengan shortcut readline (Ctrl+A/E, Ctrl+U/W, Ctrl+F/B, Ctrl+Y), serta cara memilih dan keluar dengan Enter, Esc, Ctrl+C, Tab, dan Shift+Tab.

Inti yang harus dibawa pulang:

  • Dua wilayah: mengetik mencari, tombol panah bernavigasi — keduanya hidup berdampingan.
  • Daftar item: j/k atau Ctrl+J/Ctrl+K untuk langkah halus, PageUp/PageDown untuk lompat, Ctrl+Space untuk jump mode.
  • Query: Ctrl+A/E ke ujung, Ctrl+U/W hapus, Ctrl+Y tempel kembali — bahasa readline.
  • Keluar: Enter (kode 0), Esc (kode 1), Ctrl+C (kode 130).
  • Multi-select: Tab tandai, Shift+Tab batalkan, butuh opsi --multi.

Di episode 6 selanjutnya, kita akan membahas multi-select transformasi & ANSI — cara memanfaatkan pilihan banyak item dengan transformasi output dan menangani teks berwarna (ANSI) di dalam daftar. Sampai jumpa di episode 6!

Belajar Fzf - Navigasi & Keybindings Dasar | Belajar Fzf