fzf: bộ lọc mờ cho terminal, tìm file, lịch sử lệnh, nhánh git trong vài phím
Tóm tắt
fzf biến mọi danh sách thành menu chọn nhanh. Bật tích hợp shell để có Ctrl+R tìm lịch sử, Ctrl+T chọn file, Alt+C nhảy thư mục, rồi ghép với fd và bat như IDE trong terminal.
Bạn nhớ mang máng tên file có chữ "invoice", hay một lệnh dài gõ từ tuần trước, nhưng không nhớ chính xác. fzf là "bộ lọc mờ" cho terminal: nhận một danh sách bất kỳ (file, lịch sử lệnh, nhánh git, process), cho bạn gõ vài ký tự để lọc tức thì, rồi trả lại dòng bạn chọn. Vì nó chỉ làm đúng một việc là chọn từ danh sách, bạn có thể ghép nó với gần như mọi lệnh khác.

Cài đặt và bật tích hợp shell
brew install fzf # macOS
winget install fzf # Windows
sudo apt install fzf # Ubuntu/Debian (bản trong kho có thể cũ)
# Thêm vào ~/.zshrc (bash: eval "$(fzf --bash)")
source <(fzf --zsh)
Dòng cuối bật phím tắt và tự hoàn thành. Với bản cũ không có --zsh, dùng script cài đặt trong README.
Ba phím tắt dùng hằng ngày
| Phím | Tác dụng | Tình huống |
|---|---|---|
Ctrl+R | Tìm trong lịch sử lệnh | Gõ "dock run" để tìm lại lệnh docker dài hôm trước |
Ctrl+T | Chọn file/thư mục, dán đường dẫn vào dòng lệnh | vim rồi Ctrl+T để chọn file cần mở |
Alt+C | Chọn thư mục con và cd vào | Nhảy nhanh vào thư mục sâu |
Thêm nữa: gõ ** rồi Tab để tự hoàn thành bằng fzf, ví dụ cd **<Tab> hay kill -9 **<Tab> để chọn process.
Cú pháp tìm kiếm
conf yml: khớp mờ cả hai từ, theo thứ tự bất kỳ.'exact: khớp chính xác chuỗi.^src/.ts$: bắt đầu hoặc kết thúc bằng.!test: loại các dòng chứa "test"..ts$ | .tsx$: điều kiện HOẶC.
Ghép fzf với lệnh khác
# Chuyển nhánh git bằng cách chọn
git branch --all | fzf | sed 's/remotes\/origin\///' | xargs git switch
# Mở file với khung xem trước có tô màu (cần bat)
fzf --preview 'bat --color=always {}' | xargs -r code
# Dùng fd làm nguồn danh sách file (nhanh, tôn trọng .gitignore)
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
Trong khung fzf: Tab để chọn nhiều dòng (khi chạy với -m), Ctrl+J/K hoặc mũi tên để di chuyển, Enter để xác nhận, Esc để huỷ.
Lưu ý
- Bản fzf trong kho apt có thể cũ, thiếu
--zsh; cài từ GitHub release hoặc Homebrew nếu cần tính năng mới. - Trên macOS,
Alt+Ccần đặt Option là phím Meta trong cài đặt terminal (iTerm2, Terminal.app). - Khi pipe kết quả sang lệnh nguy hiểm như
rm, nhìn kỹ lựa chọn trước khi nhấn Enter.
Áp dụng thế nào?
- Dev: Bật tích hợp shell ngay hôm nay; chỉ riêng Ctrl+R đã tiết kiệm nhiều thời gian gõ lại lệnh. Sau đó viết vài hàm nhỏ trong
.zshrccho việc lặp lại (chọn nhánh, chọn container). - Tech Lead: Đưa fzf vào script nội bộ cần người chọn (chọn môi trường deploy, chọn service để xem log) thay vì bắt nhớ tên chính xác.
- PM: Công cụ nhỏ nhưng giảm thao tác lặp: đáng đưa vào tài liệu onboarding cho dev mới.
Nguồn & tham khảo
- junegunn/fzf — junegunn (GitHub)