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
: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)
How to make Vim continue bullet points?
Unable to have Vim-like C-W f for Screen's copy-mode
Unable to replace a space with a new line in Vim
Running vim 7.0.305..
:args `grep -Rl "hello" *`
VIM Disable Automatic Newline At End Of File
Unable to create a file from a path in Vim
in vim, how to combine ^] and arge, to follow a tag and also add it to the arg list?
Unable to set syntax highlighting automatically in Vim
Get ctags in vim to go to definition, not declaration
If the backticks aren't working for you, are you use you're using a current version of vim?.
:ar[gs] `grep -Rl "hello" .`