in vim, how to set "args" to the result of a "grep -l"?

command-line, grep, vi, vim

Solution

Well, this works for me:

:args `grep -Rl "hello" *`

Running vim 7.0.305.

Problem

To illustrate, here's how to do it from the command-line: ``` vim `grep "hello" * -Rl` ``` This opens vim with all the files that have "hello" in them (-l gives the filenames alone). I want to do the same thing, but from within vim. Conceptually, something like this (which doesn't work): ``` :args !grep "hello" * -Rl ``` I'm open to completely different approaches to achieve this; I'd just like it to be on one line (so it's easy to edit and redo). The answer is to simply use backticks - but with a key proviso! The below does not work for me, because of the quotes around `hello`: ``` :args `grep "hello" * -Rl` ``` But it works if I remove them or escape the quotes: ``` :args `grep hello * -Rl` :args `grep \"hello\" * -Rl` ``` (this was buried in the comments after chaos' answer - I added them here to make them more visible, in case anyone else had this problem)

Original source