Tools

zoxide: lệnh cd thông minh, nhảy tới thư mục bằng vài chữ cái

Tóm tắt

zoxide nhớ các thư mục bạn hay vào và vừa vào gần đây. Gõ z cùng một mảnh tên để nhảy tới, zi để chọn bằng fzf. Đặt dòng init ở cuối .zshrc, thêm --cmd cd để thay hẳn cd.

Lập trình viên gõ cd nhiều đến mức không còn để ý: cd ~/work/company/projects/backend/services/payment, rồi lại cd ../../frontend. zoxide là lệnh cd "biết nhớ": nó ghi lại các thư mục bạn hay vào và vào gần đây, rồi cho phép nhảy tới chỉ bằng một mảnh tên. Gõ z payment là tới thư mục payment, bất kể bạn đang đứng ở đâu.

Trang GitHub của ajeetdsouza/zoxide
Trang GitHub của ajeetdsouza/zoxide (ảnh chụp tháng 11/2026)

GitHub: https://github.com/ajeetdsouza/zoxide · khoảng 40 nghìn sao · Rust · MIT

Cài đặt

brew install zoxide                       # macOS
cargo install zoxide --locked             # có Rust
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh

# Thêm vào CUỐI ~/.zshrc
eval "$(zoxide init zsh)"
# bash: eval "$(zoxide init bash)"   fish: zoxide init fish | source

Sau khi cài, zoxide chưa biết gì. Cứ dùng cd hoặc z như bình thường vài ngày, nó sẽ học dần.

Cách dùng

z payment          # nhảy tới thư mục khớp "payment" có điểm cao nhất
z back pay         # khớp nhiều từ: đường dẫn chứa "back" rồi "pay"
z ..               # vẫn dùng được như cd thường
z -                # quay lại thư mục trước
zi pay             # chọn tương tác bằng fzf khi có nhiều kết quả
z foo<SPACE><TAB>   # gợi ý kết quả ngay khi gõ (zsh/fish)

zoxide chọn thư mục thế nào?

Mỗi thư mục có một điểm "frecency": kết hợp số lần truy cập (frequency) và mức độ gần đây (recency). Thư mục vào nhiều và vừa vào gần đây có điểm cao nhất. Từ khoá cuối cùng phải khớp với phần cuối của đường dẫn, nên z pay sẽ ưu tiên .../payment hơn .../payment/docs.

LệnhTác dụng
zoxide query payIn ra thư mục sẽ được chọn, không nhảy
zoxide query -lsLiệt kê toàn bộ thư mục kèm điểm
zoxide add <path>Thêm thư mục thủ công
zoxide remove <path>Xoá thư mục khỏi cơ sở dữ liệu
zoxide editMở giao diện sửa điểm, xoá mục cũ

Tuỳ chỉnh

  • Thay hẳn cd: eval "$(zoxide init zsh --cmd cd)" để cd và cdi dùng zoxide.
  • Loại thư mục: đặt _ZO_EXCLUDE_DIRS để không ghi nhớ thư mục tạm hay thư mục nhạy cảm.
  • Chuyển từ công cụ khác: zoxide có lệnh zoxide import để nhập dữ liệu từ autojump, z và các công cụ tương tự (xem README).

Lưu ý

  • Dòng eval phải đặt cuối file cấu hình shell, sau các plugin khác, để tránh bị ghi đè.
  • zi cần cài fzf.
  • Khi thư mục bị xoá hoặc đổi tên, zoxide tự dọn dần; muốn sạch ngay thì dùng zoxide remove.

Áp dụng thế nào?

  • Dev: Cài và dùng song song với cd một tuần. Khi đã quen, bật --cmd cd để không phải đổi thói quen gõ.
  • Tech Lead: Trong monorepo nhiều service, zoxide giúp dev chuyển giữa các service nhanh; đưa vào hướng dẫn setup môi trường.
  • PM: Lợi ích nhỏ mỗi lần nhưng lặp lại hàng trăm lần một ngày; một công cụ "cài một lần, lợi mãi".

Nguồn & tham khảo

  1. ajeetdsouza/zoxide — ajeetdsouza (GitHub)