2009-06-23 61 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