Reputation: 12187
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)
Upvotes: 13
Views: 4160
Reputation: 124317
Well, this works for me:
:args `grep -Rl "hello" *`
Running vim 7.0.305.
Upvotes: 9
Reputation: 562498
Try the args
command:
:ar[gs] `grep -Rl "hello" .`
If the backticks aren't working for you, are you use you're using a current version of vim?
:version
Upvotes: 3