fzf và zoxide: Tăng tốc làm việc với terminal 200%

Bash terminal with command line interface

Làm việc với terminal mỗi ngày là điều không thể tránh đối với lập trình viên. Hai công cụ terminal cải thiện năng suất đáng chú ý trong thời gian gần đây là fzfzoxide. Kết hợp chúng sẽ biến shell của bạn thành công cụ tìm kiếm và điều hướng siêu tốc, giúp bạn bỏ qua hàng loạt lệnh mòn mỏi như cd lặp đi lặp lại và grep khổng lồ trong bash history.

fzf là fuzzy finder bất kỳ danh sách nào trên terminal. zoxide là thay thế thông minh cho cd, ghi nhớ thư mục bạn thường truy cập và nhảy đến đó chỉ với vài phím gõ. Cùng khám phá cách cài đặt, cấu hình và tận dụng tối đa hai công cụ này.

Terminal screenshot showing bash command line interface with syntax highlighting

fzf: Tìm kiếm mờ mọi thứ

fzf cho phép bạn chọn một mục từ danh sách tương tác bằng cách gõ từ khóa gần đúng (fuzzy matching). Nó hỗ trợ: lịch sử lệnh bash/zsh, danh sách tệp, danh sách tiến trình, biến môi trường, host SSH, bookmarks và output của lệnh bất kỳ.

Cài đặt trên Ubuntu/Debian:

sudo apt install fzf

Cài đặt trên macOS:

brew install fzf

Sau khi cài đặt, bạn có thể tìm kiếm lịch sử lệnh với phím Ctrl + R (bash/zsh) hoặc tìm file với:

fzf --preview="bat --color=always {}"

Triggers hữu ích:

  • Ctrl + T: Dán đường dẫn file/folder được chọn vào dòng lệnh hiện tại.
  • Ctrl + R: Tìm kiếm lịch sử lệnh.
  • Alt + C: Di chuyển đến thư mục được chọn.

zoxide: Thay thế cd thông minh

zoxide ghi nhận các thư mục bạn truy cập và xây dựng chỉ số quý giá dựa trên tần suất. Thay vì gõ cd /dự/án/làm/vừa/rồi/backend, bạn chỉ cần:

z backend

zoxide sẽ nhảy đến thư mục phù hợp nhất trong lịch sử. Nếu có nhiều kết quả, một menu fzf hiện ra để bạn chọn.

Cài đặt trên Linux:

curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash

Sau cài đặt, thêm dòng này vào .bashrc hoặc .zshrc:

eval "$(zoxide init bash)"

Hoặc với zsh:

eval "$(zoxide init zsh)"

Tích hợp fzf và zoxide

Khi bạn cài cả hai, zoxide sẽ tự động sử dụng fzf làm công cụ chọn khi có nhiều kết quả. Điều này cho phép bạn nhảy giữa các thư mục bằng cách gõ vài ký tự, sau đó chọn trong menu tương tác. Tốc độ điều hướng tăng lên đáng kể.

Một cấu hình nâng cao cho bashrc:

# Tìm file và mở bằng editor
alias f='fzf --preview="bat --color=always {}" --bind="enter:become(nvim {})"'

# Jump với zoxide kết hợp fzf
alias j='zoxide query -i'

So sánh các công cụ điều hướng terminal

Công cụ Ưu điểm Nhược điểm Phù hợp
cd mặc định Có sẵn, không cần cài Gõ dài, nhớ đường dẫn khó Người mới
autojump Nhớ thư mục theo trọng số Không hỗ trợ fuzzy search tốt Điều hướng thụ động
zoxide Fuzzy search, nhanh, nhẹ Cần cài đặt, học phím tắt Power user
fzf Tìm mờ mọi danh sách, preview Chỉ tìm kiếm, không ghi nhớ thư mục Tìm file, lịch sử, tiến trình

fzf và zoxide hoàn hảo khi dùng cùng nhau: zoxide ghi nhớ và đề xuất thư mục, fzf giúp bạn lọc và chọn nhanh chóng.

Giao diện terminal với fzf fuzzy search và zoxide jump

Tối ưu hóa thêm với fzf

Bạn có thể kích hoạt preview khi tìm kiếm file bằng cách cài đặt bat (cat đẹp có syntax highlight):

sudo apt install bat

Sau đó, cấu hình alias trong shell:

alias fz='fzf --preview="bat --color=always --style=numbers,changes {}" --preview-window=right:50%:wrap'

Bây giờ, mỗi khi bạn gõ fz, danh sách file sẽ hiện ra ở bên trái, nội dung file hiện ở bên phải — không cần mở editor để xem nội dung.

Lời khuyên khi dùng

  • Dùng Ctrl + R để tìm lệnh đã chạy thay vì mò lịch sử dài.
  • Dùng z để nhảy nhanh đến thư mục thường dùng.
  • Gắn Alt + C với zoxide để mở terminal trực tiếp ở thư mục mục tiêu.
  • Thêm --height 40% cho fzf nếu màn hình nhỏ, tránh che toàn bộ terminal.

Với fzf và zoxide, bạn sẽ tiết kiệm hàng phút mỗi ngày chỉ với vài phím gõ. Đây là công cụ bắt buộc với bất kỳ ai làm việc chuyên sâu với terminal.


Nguồn tham khảo:

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

auto_blog_2_1

Git Merge vs Rebase: Chọn công cụ nào cho workflow chuyên nghiệp?

Git Merge là gì và khi nào nên dùng? Git merge là lệnh hợp nhất (merge) hai nhánh (branch) lại với nhau bằng cách tạo một commit mới (merge commit)…

Xem thêm

HTMX là gì? Xây web động chỉ với HTML, không cần React hay Vue

HTMX là gì? HTMX (HTML eXtensions) là thư viện JavaScript nhẹ, chỉ 14KB khi nén, cho phép bạn xây dựng ứng dụng web động hoàn toàn bằng HTML mà không…

Xem thêm

Rust Edition mới nhất là gì?

Rust Edition mới nhất là gì? Rust dùng system gọi Editions để giới thiệu backward-incompatible changes một cách có kiểm soát. Edition mới nhất là bản 2024, tập trung vào…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất