Grep recursivo en el directorio con timón y / o proyectil?

11

Un grep recursivo en un directorio debería ser lo más simple, pero aún no he encontrado la receta para que funcione. Estoy haciendo malabarismos con los siguientes comandos y no estoy seguro de cuál tiene la funcionalidad oculta:

  • helm-find-files: El problema es que esto es realmente malo para encontrar un directorio de forma recursiva.
  • projectile-find-dir: ¡Esto es genial para encontrar el directorio! Sin embargo, a pesar de usar helm complete, no terminas en modo helm, por lo que el C-u C-scomando no funciona aquí.
  • helm-find: acerta la recursividad pero apunta a archivos, no a directorios
  • helm-projectile-find-dir: Parece ser lo que quiero.
djechlin
fuente
1
Me encanta ag y ag-mode por eso, el buscador plateado vence a grep con una mano atada a su parte posterior :-), sin embargo, no sé cómo hacerlo consciente de los proyectiles
Tom Regner
Mx proyectil-ag tal vez? («Prefijo-proyectil» A o «prefijo-proyectil» a - según la versión)
Mekk
2
Para el póster original: no entiendo cuál es su propósito. projectile-ack y projectile-ag son grandes greps recursivos dentro del proyecto de proyectil (completo). ¿No son lo que necesitas?
Mekk

Respuestas:

10

Tienes dos formas:

  • Uso helm-projectile-grep/ack/ag: puede buscar todo a partir de la raíz del proyecto. Más adelante, si desea guardar los resultados de la búsqueda, presione F3o presione TABpara cambiar al menú de acciones y seleccionar la tercera acción. Para navegar en el hgrepbúfer:

    • C-<down>: ir al siguiente partido y abrir el partido.
    • C-<up>: ir al partido anterior y abrir el partido.
    • M-<down>: ir al siguiente partido sin abrir el partido.
    • M-<up>: ir al siguiente partido sin abrir el partido.
    • C-o: abre la coincidencia actual en otra ventana.
    • RET: abre la coincidencia actual en la ventana actual.
  • Uso helm-projectile-find-dir(tenga en cuenta el helmprefijo; debe usar los comandos Helm adecuados del helm-projectilepaquete en general): limite al directorio deseado y presione C-u C-spara buscar recursivamente en ese directorio. Si no presiona C-u, solo busca en ese directorio sin profundizar.

Espero que ayude.

Tu Do
fuente
1
Acaba de permitirme desbloquear una gran ganancia informándome de esta acción "TAB" dentro de un resultado de búsqueda de proyectil. Gracias. Gracias Señor.
Emish
5

Un grep recursivo en un directorio debería ser lo más simple

Para un simple grep recursivo dentro del directorio actual, simplemente: M-x grepa continuación, dentro de la minibuffer: Run grep (like this): grep -nHr "pattern". (observe la bandera -r).

También te puede interesar rgrep:

rgrep es una función Lisp compilada con carga automática interactiva en
`grep.el '.

(rgrep REGEXP y ARCHIVOS OPCIONALES CONFIRMAR DIR)

Grep recursivamente para REGEXP en ARCHIVOS en el árbol de directorios enraizado en DIR. La búsqueda se limita a los nombres de archivo que coinciden con el patrón de shell FILES. ARCHIVOS pueden usar abreviaturas definidas en grep-files-aliases', e.g. enteringch 'es equivalente a `*. [Ch]'.

Nsukami _
fuente
Eso no está vinculado al proyectil que debería estar en el contexto.
RichieHH
2

Además de las herramientas mencionadas en las otras respuestas, otra función interesante es find-grep-diredcrear un diredbúfer que contiene todos los archivos que coinciden con un patrón grep recursivo.

Simplemente se ejecuta find . \( -type f -exec grep -q -e my-regular-expression \{\} \; \) -lsy muestra los resultados en un diredbúfer.

rekado
fuente
1

Podrías intentarlo helm-do-grep. Llamarlo con un prefijo arg le da un grep recursivo, como se explica en Helm Wiki .

Si desea iniciar helm-do-grep de forma recursiva sin iniciar helm-find-files, haga lo siguiente:

Cu helm-command-prefix-key Mg s

NOTA: Si olvida presionar Cu antes de Mg s, puede hacerlo después de seleccionar el archivo.

Se le pedirá que seleccione en qué categoría de archivos buscar: Use la sintaxis de wilcard como * .el por ejemplo (busque solo en archivos .el).

Por defecto, la extensión del archivo en el punto se usa cuando el cursor está en un nombre de archivo. Si el cursor está en la raíz de un directorio, todas las extensiones de nombre de archivo encontradas en el directorio y que no coinciden con grep-find-ignored-files se insertan en la solicitud.

Pruébalo así:

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

Manuel Uberti
fuente
0

helm-projectile-find-dirEs probablemente la funcionalidad adecuada. Usted puede

  1. Encuentra un directorio como en projectile-find-dir
  2. Pero luego termina en el modo Helm, donde puede ejecutar C-u C-suna búsqueda recursiva según lo desee.
djechlin
fuente