11

为了说明,以下是如何从命令行执行此操作:

vim `grep "hello" * -Rl`

这将打开 vim,其中包含所有包含“hello”的文件(-l 仅给出文件名)。我想做同样的事情,但在 vim 中。从概念上讲,这样的事情(不起作用):

:args !grep "hello" * -Rl

我愿意接受完全不同的方法来实现这一目标;我只是希望它在一行上(所以很容易编辑和重做)。


答案是简单地使用反引号 -但有一个关键的附带条件!由于周围的引号 ,以下内容对我不起作用hello

:args `grep "hello" * -Rl`

但如果我删除它们或转义引号,它会起作用:

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

(这在混乱的回答后被埋在评论中 - 我在这里添加它们以使它们更加明显,以防其他人遇到这个问题)

4

2 回答 2

9

好吧,这对我有用:

:args `grep -Rl "hello" *`

运行 vim 7.0.305。

于 2009-06-23T16:06:06.030 回答
3

试试args命令:

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

如果反引号对您不起作用,您是否使用当前版本的 vim?

:version
于 2009-06-23T16:11:38.480 回答