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.

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ệnh | Tác dụng |
|---|---|
zoxide query pay | In ra thư mục sẽ được chọn, không nhảy |
zoxide query -ls | Liệ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 edit | Mở giao diện sửa điểm, xoá mục cũ |
Tuỳ chỉnh
- Thay hẳn cd:
eval "$(zoxide init zsh --cmd cd)"đểcdvàcdidù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
evalphải đặt cuối file cấu hình shell, sau các plugin khác, để tránh bị ghi đè. zicầ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
- ajeetdsouza/zoxide — ajeetdsouza (GitHub)