2009-06-23 36 views
10

为了说明,这里是如何从命令行做到这一点:,如何将“args”设置为“grep -l”的结果?

vim `grep "hello" * -Rl` 

这将打开VIM与所有有“你好”在他们(-l给出单独的文件名)的文件。我想要做同样的事情,但是从vim开始。从概念上讲,这样的事情(这是行不通的):

:args !grep "hello" * -Rl 

我打开完全不同的方法来实现这一点;我只想把它放在一行上(所以编辑和重做很容易)。


答案是简单地使用反引号 - ,但有一个关键的限制条件!以下不为我工作,因为引号,周围hello

:args `grep "hello" * -Rl` 

但如果我删除或逃避引号它的工作原理:

:args `grep hello * -Rl` 
:args `grep \"hello\" * -Rl` 

(这是埋在“混沌后的评论”的答案 - 我在这里添加它们使其更容易看到,以防其他人有这个问题)

回答

8

嗯,这对我有用:

:args `grep -Rl "hello" *` 

运行vim 7.0.305。

+0

谢谢,我试过使用反引号,但vim不能识别它们 - 而是将“grep”解释为文件名。你有答案为你工作吗?如果是这样,我想知道为什么它不适合我。 – 13ren 2009-06-23 16:10:52

+0

对,对我来说工作得很好。也许是版本的东西。我使用7.0.305。 – chaos 2009-06-23 16:13:37

3

尝试args命令:

:ar[gs] `grep -Rl "hello" .` 

如果反引号不是为你工作,你用你使用vim的当前版本?

:version 
相关问题