Rekursywny grep w katalogu ze sterem i / lub pociskiem?

11

Rekursywny grep w katalogu powinien być najprostszą rzeczą, ale nie znalazłem jeszcze przepisu, aby go uruchomić. Żongluję między następującymi poleceniami i nie jestem pewien, która funkcja ma w sobie ukrytą funkcję:

  • helm-find-files: Problem polega na tym, że naprawdę źle jest znaleźć katalog rekurencyjnie.
  • projectile-find-dir: Świetnie jest znaleźć reż! Jednak pomimo użycia pełnego hełmu nie kończysz w trybie steru, więc C-u C-spolecenie tutaj nie działa.
  • helm-find: zapewnia prawidłową rekurencję, ale dotyczy plików, a nie katalogów
  • helm-projectile-find-dir: Wydaje się być tym, czego chcę.
djechlin
źródło
1
Uwielbiam do tego tryb ag i ag, srebrny poszukiwacz bije grep jedną ręką przywiązaną do pleców :-), nie wiem jednak, jak sprawić, by pocisk był świadomy
Tom Regner
Może MX pocisk-ag? («Prefiks pocisku» A lub «prefiks pocisku» a - w zależności od wersji)
Mekk
2
Do oryginalnego plakatu: Nie do końca rozumiem, jaki jest twój cel. zarówno pocisk-potwierdzenie, jak i pocisk-ag to wielkie rekurencyjne grepy w (całym) projekcie pocisku. Czy nie są tym, czego potrzebujesz?
Mekk

Odpowiedzi:

10

Masz dwa sposoby:

  • Zastosowanie helm-projectile-grep/ack/ag: Możesz wyszukiwać wszystko, zaczynając od katalogu głównego projektu. Później, jeśli chcesz zapisać wyniki wyszukiwania, naciśnij F3lub naciśnij, TABaby przejść do menu akcji i wybierz 3. akcję. Aby nawigować po hgrepbuforze:

    • C-<down>: przejdź do następnego meczu i otwórz mecz.
    • C-<up>: przejdź do poprzedniego meczu i otwórz mecz.
    • M-<down>: przejdź do następnego meczu bez otwierania meczu.
    • M-<up>: przejdź do następnego meczu bez otwierania meczu.
    • C-o: otwórz bieżące dopasowanie w innym oknie.
    • RET: otwórz bieżące dopasowanie w bieżącym oknie.
  • Użyj helm-projectile-find-dir(zwróć uwagę na helmprzedrostek; musisz użyć helm-projectileogólnie odpowiednich poleceń Helm z pakietu): zawęź do żądanego katalogu i naciśnij, C-u C-saby rekurencyjnie wyszukiwać w tym katalogu. Jeśli nie naciśniesz C-u, po prostu przeszukuje ten katalog bez wchodzenia głębiej.

Mam nadzieję, że to pomaga.

Do zrobienia
źródło
1
Właśnie umożliwiłeś mi odblokowanie ogromnego zysku, informując mnie o tej akcji „TAB” w wyniku wyszukiwania pocisków. Dziękuję Ci. Dziękuję Panu.
emish
5

Rekurencyjny grep w katalogu powinien być najprostszą rzeczą

Dla prostego rekurencyjne grep wewnątrz bieżącego katalogu, po prostu: M-x grepwtedy, wewnątrz minibufora: Run grep (like this): grep -nHr "pattern". (zauważ flagę -r).

Mogą Cię również zainteresować rgrep:

rgrep to interaktywna, automatycznie ładowana, skompilowana funkcja Lisp w
`grep.el '.

(rgrep REGEXP i opcjonalne PLIKI DIR CONFIRM)

Rekurencyjnie grep dla REGEXP w PLIKACH w drzewie katalogów zrootowanym w DIR. Wyszukiwanie jest ograniczone do nazw plików pasujących do wzorca powłoki PLIKI. PLIKI mogą używać skrótów zdefiniowanych w grep-files-aliases', e.g. enteringch 'jest równoważne z „*. [Ch]”.

Nsukami _
źródło
Nie jest to związane z pociskiem, który powinien znajdować się w kontekście.
RichieHH,
2

Oprócz narzędzi wymienionych w innych odpowiedziach, kolejną fajną funkcją jest find-grep-diredtworzenie diredbufora zawierającego wszystkie pliki pasujące do rekurencyjnego wzoru grep.

Po prostu działa find . \( -type f -exec grep -q -e my-regular-expression \{\} \; \) -lsi wyświetla wyniki w diredbuforze.

rekado
źródło
1

Możesz spróbować helm-do-grep. Wywołanie go z prefiksem arg daje rekurencyjne grep, jak wyjaśniono w Wiki Helm .

Jeśli chcesz uruchomić helm-do-grep rekurencyjnie bez uruchamiania plików znalezienia steru, wykonaj:

Cu-ster-klawisz-prefiks-klucz Mg s

UWAGA: Jeśli zapomnisz trafić Cu przed Mg s, możesz to zrobić po wybraniu pliku.

Zostaniesz poproszony o wybranie kategorii plików do przeszukania: Użyj na przykład składni wilcard, na przykład * .el (szukaj tylko w plikach .el).

Domyślnie rozszerzenie pliku w punkcie jest używane, gdy kursor znajduje się na nazwie pliku. Jeśli kursor znajduje się w katalogu głównym katalogu, wszystkie rozszerzenia plików znalezione w katalogu i niepasujące do plików grep-find-ignored-pliki są wstawiane do monitu.

Spróbuj tak:

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

Manuel Uberti
źródło
0

helm-projectile-find-dirto prawdopodobnie odpowiednia funkcjonalność. Możesz

  1. Znajdź katalog jak w projectile-find-dir
  2. Ale potem kończysz w trybie Helm, w którym możesz uruchomić C-u C-swyszukiwanie rekurencyjne według potrzeb.
djechlin
źródło