11

説明のために、コマンドラインからこれを行う方法は次のとおりです。

vim `grep "hello" * -Rl`

これにより、「hello」が含まれるすべてのファイルでvimが開きます(-lはファイル名のみを示します)。同じことをしたいのですが、vimの中からです。概念的には、このようなもの(これは機能しません):

:args !grep "hello" * -Rl

私はこれを達成するために完全に異なるアプローチを受け入れています。1行にしたいのです(編集とやり直しが簡単です)。


答えは、単にバックティックを使用することですが、重要な条件があります!以下は引用符が付いている ため、私には機能しませんhello

:args `grep "hello" * -Rl`

しかし、それらを削除するか、引用符をエスケープすると機能します。

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

(これはカオスの答えの後のコメントに埋もれていました-他の誰かがこの問題を抱えている場合に備えて、それらをより見やすくするためにここに追加しました)

4

2 に答える 2

9

まあ、これは私のために働きます:

:args `grep -Rl "hello" *`

vim7.0.305を実行しています。

于 2009-06-23T16:06:06.030 に答える
3

args次のコマンドを試してください。

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

バックティックが機能しない場合は、現在のバージョンのvimを使用していますか?

:version
于 2009-06-23T16:11:38.480 に答える