Câu trả lời đầu tiên rất hay, nhưng nó bỏ qua một số chi tiết quan trọng về các phiên bản hiện đại của Emacs. Tôi biết Emacs mình, vì vậy những người mới khác có thể không nhận thức được điều này. Vì mục tiêu của bạn là tìm kiếm văn bản TRONG MỘT tệp trong DỰ ÁN, trước tiên bạn sẽ cài đặt Projectile bằng kho lưu trữ MELPA.
Thao tác này sẽ cài đặt gói trong .emacs.d và thêm một số cấu hình cơ bản vào .emacs trong thư mục $ USER của bạn (giả sử bạn đã tạo tệp .emacs), chẳng hạn như yêu cầu Projectile trong cài đặt Emacs của bạn.
Tuy nhiên, bạn vẫn cần kích hoạt nó và liên kết các tiền tố keymap, để bạn có thể gọi nó trong bộ đệm mini.
Câu trả lời được chấp nhận đề cập đến lệnh sau:
C-c p s g
Điều này sẽ không hoạt động, trừ khi bạn định cấu hình Projectile với tiền tố sơ đồ bàn phím này. Nhưng tôi đã cấu hình nó để sử dụng Cc Cp làm lệnh cho Project trong .emacs:
(projectile-mode +1)
(define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map)
Bây giờ được đưa ra, tôi có thể thực hiện tìm kiếm văn bản trong các tệp trong một dự án bằng grep:
C-c C-p f # switch to a project first
C-c C-p s g # perform grep search in project
Để phá vỡ nó, C-c C-p
sẽ gọi Projectile và s g
sẽ thực hiện tìm kiếm grep. Bạn sẽ nhận được một đầu ra đẹp như thế này, giả sử tìm kiếm của bạn là visit_contact
và bạn đang tìm kiếm rspec của Ruby trong một dự án:
./spec/support/capybara_classification_code_helper.rb:21: def visit_contact
./spec/features/admin_edits_classification_code_role_dynamic_field_spec.rb:8: visit_contact
./spec/features/admin_edits_classification_code_role_dynamic_field_spec.rb:33: visit_contact
./spec/features/user_views_global_filters_from_line_item_spec.rb:9: visit_contact
rgrep
hơi khó hiểu, vì nó loại trừ tất cả các tệp phù hợp với tiêu chí "tệp vô dụng" của bạn theo mặc định.