Dümen ve / veya mermi ile dizinde özyinelemeli grep?


11

Bir dizindeki özyinelemeli bir grep en basit şey olmalı, ancak henüz işe yaramasını sağlayacak tarifi bulamadım. Aşağıdaki komutlar arasında hokkabazlık yapıyorum ve işlevselliği içinde gömülü olduğundan emin değilim:

  • helm-find-files: Sorun şu ki, bu bir dizini özyinelemede bulmakta gerçekten kötü.
  • projectile-find-dir: Dir bulmak bu harika! Bununla birlikte dümen tamamlandı kullanılmasına rağmen dümen modunda sarılmazsınız, bu yüzden C-u C-skomut burada çalışmaz.
  • helm-find: özyinelemeyi doğru yapar ancak dosyaları değil, dizinleri hedefler
  • helm-projectile-find-dir: İstediğim gibi görünüyor.

1
Bunun için ag ve ag modunu seviyorum, gümüş araştırmacı sırtı bağlı bir eliyle grep'i atıyor :-), yine de mermi nasıl bilinçli hale getireceğini bilmiyorum
Tom Regner

Mx mermi-ag belki? («Mermi öneki» A veya «mermi öneki» a - sürüme bağlı olarak)
Mekk

2
Orijinal postere: Amacınızın ne olduğunu tam olarak anlamıyorum. mermi-ack ve mermi-ag (bütün) mermi projesi içinde büyük tekrarlayan greps vardır. İhtiyacınız olan şey onlar değil mi?
Mekk

Yanıtlar:


10

İki yolunuz var:

  • Kullan helm-projectile-grep/ack/ag: Proje kökünden başlayarak her şeyi arayabilirsiniz. Daha sonra arama sonuçlarını kaydetmek istiyorsanız, eylem menüsüne geçmek ve 3. eylemi seçmek için F3tuşuna basın veya tuşuna basın TAB. Gezinme için hgreptampon:

    • C-<down>: bir sonraki maça git ve maçı aç.
    • C-<up>: önceki maça git ve maçı aç.
    • M-<down>: Maçı açmadan bir sonraki maça git.
    • M-<up>: Maçı açmadan bir sonraki maça git.
    • C-o: geçerli eşleşmeyi başka pencerede aç.
    • RET: geçerli eşleşmeyi geçerli pencerede aç.
  • Use helm-projectile-find-dir( helmöneki not edin ; helm-projectilepaketten genel olarak Helm komutlarını kullanmanız gerekir ): istenen dizine C-u C-sdaraltın ve bu dizinde özyinelemeli olarak arama yapmak için tuşuna basın . Basmazsanız C-u, daha derine inmeden o dizinde arama yapar.

Umarım yardımcı olur.


1
Yeni bir mermi arama sonucundaki bu "SEKME" eylemini bana bildirerek büyük bir kazancın kilidini açmamı sağladınız. Teşekkür ederim. Teşekkürler bayım.
17'de 36 emish

5

Bir dizindeki özyinelemeli bir grep en basit şey olmalı

Geçerli dizinde basit bir özyinelemeli grep için, sadece: M-x grepsonra, minibuffer: içinde Run grep (like this): grep -nHr "pattern". (-r bayrağına dikkat edin).

Ayrıca ilginizi çekebilir rgrep:

rgrep, grep.el dosyasında etkileşimli otomatik yüklenen derlenmiş Lisp işlevidir
.

(rgrep REGEXP ve isteğe bağlı FILES DIR CONFIRM)

DIR köklü dizin ağacındaki DOSYALAR'da REGEXP için özyineli olarak grep. Arama, kabuk deseni FILES ile eşleşen dosya adları ile sınırlıdır. FILES grep-files-aliases', e.g. enteringch 'de tanımlanan kısaltmaları `*. [Ch]' ile eşdeğer kullanabilir.


Bu bağlamda olması gereken mermiyle bağlantılı değildir.
RichieHH

2

Diğer cevaplarda bahsedilen araçlara ek olarak, yinelenen bir grep kalıbıyla eşleşen tüm dosyaları içeren find-grep-diredbir diredtampon oluşturan başka bir harika işlevdir .

Sadece çalışır find . \( -type f -exec grep -q -e my-regular-expression \{\} \; \) -lsve sonuçları bir diredarabellekte görüntüler.


1

Deneyebilirsin helm-do-grep. Bir önek argümanıyla çağırmak, Helm Wiki'de açıklandığı gibi size yinelemeli bir grep verir .

Dümen bul dosyalarını başlatmadan dümen-do-grep'i yinelemeli olarak başlatmak istiyorsanız, şunları yapın:

Cu dümen-komut-önek tuşu Mg s

NOT: Mg'lerden önce Cu tuşuna basmayı unutursanız, dosya seçiminden sonra bunu yapabilirsiniz.

Hangi kategoride arama yapılacağını seçmeniz istenir: Örneğin * .el gibi wilcard sözdizimini kullanın (yalnızca .el dosyalarında arama yapın).

Varsayılan olarak, imleç bir dosya adındayken noktadaki dosyanın uzantısı kullanılır. İmleç bir dizinin kökündeyse, dizinde bulunan ve grep-find-ignored-files ile eşleşmeyen tüm dosya adı uzantıları bilgi istemine eklenir.

Şöyle deneyin:

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


0

helm-projectile-find-dirmuhtemelen uygun işlevselliktir. Yapabilirsin

  1. İçindeki bir dizini bulun projectile-find-dir
  2. Ancak, Helm modunu bitirirsiniz ve burada C-u C-stekrarlanan bir arama için istediğiniz gibi çalışabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.