en vim, ¿cómo establecer "args" en el resultado de un "grep -l"?
-
06-07-2019 - |
Pregunta
Para ilustrar, a continuación se explica cómo hacerlo desde la línea de comandos:
vim `grep "hello" * -Rl`
Esto abre vim con todos los archivos que tienen "hola" en ellos (-l da solo los nombres de los archivos). Quiero hacer lo mismo, pero desde dentro vim. Conceptualmente, algo como esto (que no funciona):
:args !grep "hello" * -Rl
Estoy abierto a enfoques completamente diferentes para lograr esto; Simplemente me gustaría que estuviera en una línea (por lo que es fácil de editar y rehacer).
¡La respuesta es simplemente usar backticks - pero con una condición clave! Lo siguiente no funciona para mí, debido a las comillas alrededor de hola :
:args `grep "hello" * -Rl`
Pero funciona si los elimino o escapo de las comillas:
:args `grep hello * -Rl`
:args `grep \"hello\" * -Rl`
(esto quedó oculto en los comentarios después de la respuesta del caos: los agregué aquí para hacerlos más visibles, en caso de que alguien más tuviera este problema)
Solución
Bueno, esto funciona para mí:
:args `grep -Rl "hello" *`
Ejecutando vim 7.0.305.
Otros consejos
Pruebe el comando args
:
:ar[gs] `grep -Rl "hello" .`
Si los backticks no funcionan para usted, ¿está usando una versión actual de vim?
:version