TopGit
Đánh giá repo GitHub

ripgrep: Tìm Kiếm Regex Nhanh, Tôn Trọng Gitignore

BurntSushi/ripgrep
RTopGit review image for BurntSushi/ripgrep
Review by Topgit.dev for BurntSushi/ripgrep, with GitHub repository stats and README context.
Nhận định nhanh

ripgrep là công cụ dòng lệnh tìm kiếm đệ quy trong một thư mục theo mẫu regex, mặc định bỏ qua mọi thứ bị .gitignore loại trừ. Hãy dùng ripgrep khi bạn tìm kiếm trong một codebase thực tế và muốn có sẵn khả năng lọc đó, cùng hỗ trợ Unicode và engine PCRE2 tùy chọn mà không cần cấu hình thêm. Bỏ qua nó nếu bạn cần một công cụ chuẩn POSIX, chắc chắn có sẵn ở mọi nơi: chính README cũng chỉ ra grep truyền thống là lựa chọn phù hợp hơn.

Sao
★ 67.0k
Fork
⑂ 2.7k
Ngôn ngữ
Rust
Giấy phép
Unlicense
Chủ đề
Developer Tools
Cập nhật
Aug 2026
Trang chủ
GitHub

ripgrep Là Gì?

ripgrep, chạy từ terminal bằng lệnh rg, là công cụ tìm kiếm theo dòng, tìm kiếm đệ quy trong thư mục hiện tại theo mẫu regex. Mặc định nó bỏ qua các tệp bị loại trừ bởi .gitignore, .ignore, hoặc .rgignore, cùng các tệp ẩn và tệp nhị phân; khả năng lọc này có thể tắt bằng rg -uuu. Tên tệp thực thi là rg. ripgrep viết bằng Rust và có giấy phép kép MIT hoặc Unlicense.

Tính năng cốt lõi cho nhà phát triển

  • Tìm kiếm đệ quy, tôn trọng gitignore theo mặc định: ripgrep bỏ qua các tệp khớp với .gitignore, .ignore, hoặc .rgignore, cùng tệp ẩn và tệp nhị phân, trừ khi bạn tắt bằng rg -uuu.
  • Lọc theo loại tệp ngay khi tìm kiếm: rg -tpy foo giới hạn tìm kiếm trong tệp Python, rg -Tjs foo loại trừ JavaScript, và bạn có thể dạy ripgrep nhận loại tệp mới bằng quy tắc khớp tùy chỉnh.
  • Hỗ trợ Unicode luôn bật sẵn, được xây dựng trực tiếp vào bên trong engine finite-automaton thay vì phải bật thêm như một chế độ chậm hơn.
  • Engine PCRE2 tùy chọn (-P/--pcre2, hoặc --auto-hybrid-regex để chỉ dùng khi cần) bổ sung khớp look-around và backreference mà engine mặc định không hỗ trợ.
  • Tìm kiếm ngay bên trong tệp nén (brotli, bzip2, gzip, lz4, lzma, xz, hoặc zstandard) bằng tùy chọn -z/--search-zip.
  • Đọc các bảng mã văn bản ngoài UTF-8, gồm UTF-16, latin-1, GBK, EUC-JP, và Shift_JIS, qua tùy chọn -E/--encoding, kèm khả năng tự nhận diện UTF-16 ở một số trường hợp.
  • Hỗ trợ thay thế sơ khai trên kết quả khớp, các bộ lọc tiền xử lý đầu vào tùy ý (trích xuất văn bản PDF, giải nén tùy chỉnh, giải mã), và một tệp cấu hình cho các tùy chọn bạn luôn muốn bật.
  • Tự động chọn tìm kiếm bằng memory map cho tệp đơn lẻ hoặc tìm kiếm theo bộ đệm tăng dần cho cây thư mục lớn, và duyệt thư mục bằng iterator song song lock-free dựa trên crate crossbeam và ignore.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Cài đặt ripgrep

Tệp thực thi của ripgrep có tên rg. Mỗi bản phát hành trên GitHub đều kèm gói nhị phân dựng sẵn cho Windows, macOS, và Linux, trong đó bản Linux và Windows là tệp thực thi tĩnh, nên nền tảng nào chưa có trong trình quản lý gói bên dưới vẫn có thể tải trực tiếp. Hầu hết các thiết lập đều có trình quản lý gói riêng: Homebrew và MacPorts trên macOS; Chocolatey, Scoop, và Winget trên Windows; kho gói gốc trên Arch (pacman), Gentoo (emerge), Fedora (dnf), openSUSE Tumbleweed và Leap từ 15.1 (zypper), Debian và Ubuntu từ Cosmic trở đi (apt-get, dù bản trên Debian stable có thể cũ hơn gói .deb tải trực tiếp), Void Linux (xbps-install), FreeBSD (pkg), OpenBSD (pkg_add), NetBSD (pkgin), Haiku (pkgman), Nix (nixpkgs), Flox, và Guix. CentOS Stream 10, RHEL 10, và Rocky Linux 10 cài qua kho EPEL sau khi bật kho crb/codeready-builder. Nếu bạn dùng Rust, có thể bỏ qua tất cả những bước trên và chạy cargo install ripgrep hoặc cargo binstall ripgrep trực tiếp; build từ mã nguồn cần Rust 1.96.0 trở lên.

Cách dùng cơ bản của ripgrep

Tìm kiếm cơ bản bắt đầu bằng rg 'pattern', lệnh này sẽ duyệt đệ quy thư mục hiện tại với khả năng lọc theo gitignore. Giới hạn theo loại tệp bằng rg -tpy foo (chỉ Python) hoặc loại trừ một loại bằng rg -Tjs foo (bỏ qua JavaScript); ripgrep cũng cho phép đăng ký quy tắc loại tệp tùy chỉnh. Tắt toàn bộ khả năng lọc tự động bằng rg -uuu khi bạn cố ý muốn tìm trong nội dung bị bỏ qua, tệp ẩn, hoặc tệp nhị phân. Chuyển engine regex bằng -P/--pcre2 (hoặc --auto-hybrid-regex) khi mẫu tìm kiếm cần look-around hoặc backreference, tìm bên trong tệp nén bằng -z/--search-zip, và trỏ -E/--encoding vào tệp không phải UTF-8 khi cần. Các tùy chọn muốn dùng lâu dài có thể đặt trong một tệp cấu hình thay vì gõ lại mỗi lần.

Điểm mạnh

  • Tìm kiếm đệ quy tôn trọng gitignore cùng tự động bỏ qua tệp ẩn và tệp nhị phân, bật sẵn theo mặc định thay vì phải tự cấu hình.
  • Hỗ trợ Unicode luôn bật, không phải một chế độ tùy chọn chậm hơn mà bạn phải nhớ bật lên.
  • Phát hành dưới dạng một tệp thực thi tĩnh duy nhất, có bản nhị phân dựng sẵn cho mọi bản phát hành, cùng gói cài trên hầu hết trình quản lý gói phổ biến.
  • Engine PCRE2 tùy chọn bổ sung khớp look-around và backreference mà không phải đánh đổi tốc độ của engine mặc định cho các mẫu tìm kiếm thông thường.
  • Giấy phép kép MIT hoặc Unlicense, nên bản quyền không phải rào cản cho bất kỳ mục đích sử dụng nào.

Khi nào công cụ khác phù hợp hơn

  • ripgrep không phải công cụ chuẩn POSIX; chính README của dự án cũng chỉ ra grep truyền thống là lựa chọn tốt hơn khi bạn cần một công cụ tương thích chuẩn, chắc chắn có mặt trên mọi máy.
  • Khớp look-around và backreference chỉ hoạt động qua engine PCRE2 tùy chọn (-P/--pcre2 hoặc build kèm tính năng pcre2); chúng không có trong engine regex mặc định.
  • Build từ mã nguồn cần Rust 1.96.0 trở lên, nên người đóng góp dùng toolchain cũ hơn phải nâng cấp trước khi biên dịch được.
  • Bản nhị phân dựng sẵn mặc định kèm debug symbols, khiến dung lượng lớn hơn dự kiến cho tới khi bạn tự chạy strip để loại bỏ.
  • Danh sách lý do không nên dùng ripgrep trong README cũng khá mở: nó còn nhắc tới một tính năng hoặc lỗi chưa được liệt kê cụ thể, hoặc một trường hợp hiệu năng đặc biệt chưa nêu rõ, thay vì liệt kê đầy đủ mọi hạn chế.

ripgrep so với các công cụ tìm kiếm khác

grep — công cụ tìm kiếm chuẩn POSIX mà chính README của ripgrep chỉ tới khi bạn cần một công cụ có mặt ở mọi nơi.The Silver Searcher (ag) — một công cụ tìm kiếm code mà README của ripgrep xếp chung như một dự án tương tự, dùng để tìm kiếm trong source tree.ack — một công cụ tìm kiếm code khác mà README nhóm chung với ripgrep và The Silver Searcher như những công cụ tương tự.ast-grep — công cụ tìm kiếm code theo cấu trúc, dựa trên AST, để khớp mẫu code thay vì regex thuần, hữu ích khi tìm kiếm bằng regex chưa đủ chính xác.

Câu hỏi thường gặp về ripgrep

Giấy phép của ripgrep là gì?

ripgrep có giấy phép kép: bạn có thể dùng theo giấy phép MIT hoặc theo Unlicense, tùy theo yêu cầu của dự án bạn.

ripgrep có hỗ trợ Windows, macOS, và Linux không?

ripgrep chạy được trên Windows, macOS, và Linux, và mỗi bản phát hành trên GitHub đều kèm bản nhị phân dựng sẵn cho cả ba nền tảng, cùng gói cài trên hầu hết trình quản lý gói phổ biến.

ripgrep có thể thay thế hoàn toàn grep truyền thống không?

ripgrep đáp ứng phần lớn nhu cầu grep hằng ngày, nhưng chính README của dự án cũng không khẳng định thay thế hoàn toàn: nó không tuân theo chuẩn POSIX, nên grep truyền thống vẫn là lựa chọn an toàn hơn khi bạn cần tính tương thích chặt chẽ.

ripgrep có hỗ trợ ký tự Unicode không?

ripgrep hỗ trợ khớp Unicode đầy đủ theo mặc định, với việc giải mã UTF-8 được xây dựng trực tiếp vào engine regex thay vì phải bật riêng.

ripgrep có thể tìm kiếm trong tệp nén không?

ripgrep có thể tìm kiếm bên trong tệp nén ở nhiều định dạng, gồm brotli, bzip2, gzip, lz4, lzma, xz, và zstandard, bằng tùy chọn -z/--search-zip.

ripgrep có hỗ trợ biểu thức chính quy PCRE2 không?

ripgrep hỗ trợ PCRE2 như một engine tùy chọn, bật bằng -P/--pcre2 hoặc --auto-hybrid-regex, bổ sung khớp look-around và backreference mà engine mặc định không có.

Vấn đề mà ripgrep giải quyết

Dùng grep thông thường trên một dự án thực tế cũng sẽ khớp cả vào build output, node_modules, các thư mục vendor, và mọi thứ khác mà .gitignore của bạn đã loại trừ, khiến bạn phải duy trì một danh sách --exclude ngày càng dài hoặc phải lọc qua find trước. README của ripgrep nêu rõ lý do dự án ra đời chính từ sự bất tiện đó: lọc theo gitignore, cùng việc bỏ qua tệp ẩn và tệp nhị phân, được xây sẵn làm hành vi mặc định thay vì thứ bạn phải tự cấu hình mỗi lần.

Trường hợp sử dụng tốt nhất

  • Tìm kiếm một hàm hoặc chuỗi trong codebase lớn mà không cần tự viết đường dẫn loại trừ cho build output, vì quy tắc gitignore được áp dụng tự động.
  • Giới hạn tìm kiếm vào một loại tệp ngay khi cần bằng -tpy hoặc -Tjs thay vì tự duy trì danh sách đuôi tệp.
  • Tìm kiếm trong log hoặc dữ liệu lưu ở bảng mã khác UTF-8, như Shift_JIS, GBK, hoặc latin-1, qua -E/--encoding.
  • Tìm kiếm trực tiếp bên trong tệp nén (gzip, zstandard, và các định dạng khác) bằng -z/--search-zip thay vì phải giải nén trước.
  • Viết một mẫu regex cần look-around hoặc backreference bằng cách chuyển sang engine PCRE2 với -P.

Ai nên dùng — và ai nên bỏ qua

Hãy dùng ripgrep nếu bạn thường xuyên tìm kiếm trong source tree và muốn có sẵn khả năng lọc theo gitignore, hỗ trợ Unicode đầy đủ, cùng engine PCRE2 tùy chọn cho những mẫu cần đến nó. Bỏ qua nó nếu bạn cần một công cụ chuẩn POSIX, chắc chắn đã có sẵn ở mọi nơi; chính README cũng nhường việc đó lại cho grep truyền thống.

Repo liên quan

Nguồn & ghi công

Thông tin và trích dẫn lấy từ repository GitHub BurntSushi/ripgrep và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 14 thg 8, 2026Đánh giá bởi Henry
Về TopGit

Vẫn đang phân vân về ripgrep?

Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về ripgrep.

GitHub