2009-06-23 3 views
10

Per illustrare, ecco come farlo dalla riga di comando:in vim, come impostare "args" sul risultato di un "grep -l"?

vim `grep "hello" * -Rl` 

Questo apre vim con tutti i file che sono "ciao" in loro (-l dà i nomi dei file da solo). Voglio fare la stessa cosa, ma da dentro. Concettualmente, qualcosa di simile (che non funziona):

:args !grep "hello" * -Rl 

Sono aperto a completamente diversi approcci per raggiungere questo obiettivo; Mi piacerebbe che fosse su una riga (quindi è facile da modificare e ripetere).


La risposta è di utilizzare semplicemente apici inversi - ma con una clausola chiave! Il sotto non funziona per me, a causa delle citazioni intorno hello:

:args `grep "hello" * -Rl` 

Ma funziona se tolgo loro o sfuggire alle citazioni:

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

(questo è stato sepolto nel commenti dopo la risposta del caos - li ho aggiunti qui per renderli più visibili, nel caso in cui qualcun altro avesse questo problema)

risposta

8

Bene, questo funziona per me:

:args `grep -Rl "hello" *` 

In esecuzione vim 7.0.305.

+0

grazie, ho provato a utilizzare i backtick, ma vim non li ha riconosciuti, invece interpreta "grep" come nome file. Hai la risposta per lavorare per te? Se è così, mi chiedo perché non funziona per me. – 13ren

+0

Sì, ha funzionato bene per me. Forse una versione. Sto usando 7.0.305. – chaos

+0

hmmm,: la versione mi dà: VIM - Vi IMproved 7.0 (2006, 7 maggio, compilato 31 gen 2007 18:15:57) Patch incluse: 1-122 – 13ren

3

Prova il comando args:

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

Se gli apici inversi non funzionano per te, sei si utilizza si sta utilizzando una versione corrente di vim?

:version 
+0

grazie, ho provato, ma "grep" è interpretato come un nome file ... – 13ren

+0

È la versione 7, ma non l'ultima, sto verificando una nuova versione ora – 13ren

+0

Ho appena aggiornato alla versione 7.1.314, ma lo stesso problema Mi chiedo quale sia il problema. – 13ren