Grep đệ quy trong thư mục với helm và / hoặc đạn?


11

Một grep đệ quy trong một thư mục sẽ là điều đơn giản nhất, nhưng tôi chưa tìm thấy công thức để làm cho nó hoạt động. Tôi đang tung hứng giữa các lệnh sau và không chắc cái nào có chức năng bị chôn vùi trong đó:

  • helm-find-files: Vấn đề là điều này thực sự tồi tệ trong việc tìm một thư mục đệ quy.
  • projectile-find-dir: Điều này là tuyệt vời trong việc tìm kiếm các dir! Tuy nhiên, mặc dù sử dụng helm hoàn chỉnh, bạn không kết thúc ở chế độ helm, vì vậy C-u C-slệnh không hoạt động ở đây.
  • helm-find: có quyền đệ quy nhưng nhắm mục tiêu tệp, không phải thư mục
  • helm-projectile-find-dir: Có vẻ là những gì tôi muốn.

1
Tôi yêu ag và chế độ ag vì điều đó, người tìm kiếm bạc đánh grep bằng một tay bị trói vào lưng :-), không biết làm thế nào để nó nhận biết được, mặc dù vậy
Tom Regner

Mx đạn có thể? («Tiền tố dự án» A hoặc «tiền tố dự án» a - tùy thuộc vào phiên bản)
Mekk

2
Đối với người đăng ban đầu: Tôi hoàn toàn không hiểu mục đích của bạn là gì. projectile-ack và projectile-ag đều là những greps đệ quy tuyệt vời trong (toàn bộ) dự án đạn. Họ không phải là những gì bạn cần?
Mekk

Câu trả lời:


10

Bạn có hai cách:

  • Sử dụng helm-projectile-grep/ack/ag: Bạn có thể tìm kiếm mọi thứ bắt đầu từ gốc dự án. Sau này nếu bạn muốn lưu kết quả tìm kiếm, nhấn F3hoặc nhấn TABđể chuyển sang menu hành động và chọn hành động thứ 3. Để điều hướng hgrepbộ đệm:

    • C-<down>: đi đến trận đấu tiếp theo và mở trận đấu.
    • C-<up>: đi đến trận đấu trước và mở trận đấu.
    • M-<down>: đi đến trận đấu tiếp theo mà không mở trận đấu.
    • M-<up>: đi đến trận đấu tiếp theo mà không mở trận đấu.
    • C-o: mở kết quả hiện tại trong cửa sổ khác.
    • RET: mở kết quả hiện tại trong cửa sổ hiện tại.
  • Sử dụng helm-projectile-find-dir(lưu ý helmtiền tố; bạn phải sử dụng các lệnh Helm thích hợp từ helm-projectilegói nói chung): thu hẹp vào một thư mục mong muốn và nhấn C-u C-sđể tìm kiếm đệ quy trong thư mục đó. Nếu bạn không nhấn C-u, nó chỉ tìm kiếm trong thư mục đó mà không đi sâu hơn.

Mong rằng sẽ giúp.


1
Bạn vừa cho phép tôi mở khóa một khoản lợi lớn bằng cách thông báo cho tôi về hành động "TAB" này trong kết quả tìm kiếm phóng. Cảm ơn bạn. Cảm ơn ngài.
xuất hiện vào

5

Một grep đệ quy trong một thư mục nên là điều đơn giản nhất

Đối với một grep đệ quy đơn giản trong thư mục hiện tại, chỉ cần: M-x grepsau đó, bên trong bộ thu nhỏ : Run grep (like this): grep -nHr "pattern". (chú ý cờ -r).

Bạn cũng có thể quan tâm bởi rgrep:

rgrep là một hàm Lisp được biên dịch tự động tương tác trong
`grep.el '.

(rgrep REGEXP & tùy chọn PHIM CONFIRM)

Grep đệ quy cho REGEXP trong PHIM trong cây thư mục bắt nguồn từ DIR. Việc tìm kiếm được giới hạn ở tên tệp khớp với mẫu shell. PHIM có thể sử dụng các chữ viết tắt được định nghĩa trong grep-files-aliases', e.g. enteringch 'tương đương với `*. [Ch]'.


Điều đó không liên quan đến đạn mà nó nên có trong bối cảnh.
RichieHH

2

Ngoài các công cụ được đề cập trong các câu trả lời khác, một chức năng thú vị khác là find-grep-diredtạo một diredbộ đệm chứa tất cả các tệp khớp với mẫu grep đệ quy.

Nó chỉ chạy find . \( -type f -exec grep -q -e my-regular-expression \{\} \; \) -lsvà hiển thị kết quả trong một diredbộ đệm.


1

Bạn có thể thử helm-do-grep. Gọi nó với tiền tố arg cung cấp cho bạn một grep đệ quy, như được giải thích trong Helm Wiki .

Nếu bạn muốn khởi chạy đệ quy helm-do-grep mà không bắt đầu tệp helm-find-files, hãy làm:

Cu helm-lệnh-prefix-key Mg s

LƯU Ý: Nếu bạn quên nhấn Cu trước Mg s, bạn có thể thực hiện sau khi chọn tệp.

Bạn sẽ được nhắc chọn loại danh mục tệp cần tìm: Sử dụng cú pháp wilcard như * .el chẳng hạn (chỉ tìm trong tệp .el).

Theo mặc định, phần mở rộng của tệp tại điểm được sử dụng khi con trỏ ở trên tên tệp. Nếu con trỏ ở gốc của một thư mục, tất cả các phần mở rộng tên tệp được tìm thấy trong thư mục và không khớp với các tệp grep-find-bỏ qua được chèn vào dấu nhắc.

Hãy thử nó như vậy:

C-u helm-command-prefix-key M-g s


0

helm-projectile-find-dircó lẽ là chức năng thích hợp. Bạn có thể

  1. Tìm một thư mục như trong projectile-find-dir
  2. Nhưng sau đó, bạn kết thúc ở chế độ Helm, nơi bạn có thể chạy C-u C-sđể tìm kiếm đệ quy như mong muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.