Kako pretražiti i zamijeniti više datoteka u Vimu

U ovom ćete članku naučiti kako interaktivno pretraživati ​​i zamjenjivati ​​mnoge datoteke pomoću samo dvije naredbe, zahvaljujući Vimu.

Iako postoji mnoštvo metoda za traženje i zamjenu riječi u jednoj datoteci, što učiniti kada imate niz za ažuriranje u više nepovezanih datoteka, sve s različitim imenima? Iskoristite moć alata naredbenog retka, naravno!

Prvo ćete trebati findsve datoteke koje želite promijeniti. Nizanje onoga što je učinkovito za upite za pretraživanje findstvarno je ograničeno samo vašom maštom.

Evo jednostavnog primjera koji pronalazi Python datoteke:

find . -name '*.py' 

U -nameispitivanju traži uzorak, kao što su sve datoteke završava .py. Ali findmožete učiniti puno više s drugim uvjetima ispitivanja, uključujući -regextestove. Trčite find --helpda vidite mnoštvo mogućnosti.

Dalje prilagodite svoje pretraživanje tako grepda dobijete samo datoteke koje sadrže niz koji želite promijeniti, na primjer dodavanjem:

grep -le '\' 

-lOpcija vam daje samo imena datoteka za sve datoteke koje sadrže uzorak (označene s -e) koji odgovaraju „kita”.

Također možete koristiti Vimov impresivan :bufdokoji vam omogućuje pokretanje iste naredbe u više međuspremnika. Interaktivno radi sa svim tim datotekama, bez zamjene otvaranja, spremanja i zatvaranja svake datoteke, jednu po jednu.

Priključimo vaše moćne find+ greprezultate u Vim sa:

vim `find . -name '*.py' \ -exec grep -le '\' {} \;` 

Korištenje backtick-proširenja za prosljeđivanje pretraživanja Vimu otvara više spremnika spremnih za rad. ( :h backtick-expansionU Vimu potražite još.)

Sada možete primijeniti naredbu Vim :bufdona sve ove datoteke i izvoditi radnje poput interaktivnog pretraživanja i zamjene:

:bufdo %s/a whale/a bowl of petunias/gce 

For gza "globalno" promijenit će pojave uzorka na svim linijama. eĆe izostaviti pogreške ako je uzorak nije pronađen. cOpcija čini ovaj interaktivni. Ako se osjećate samopouzdano, možete ga izostaviti da unesete promjene bez pregledavanja svake od njih.

Kad završite s pregledavanjem svih međuspremnika, spremite sav posao koji ste dovršili:

:bufdo wq! 

Zatim uživajte u slavi svog ušteđenog vremena i truda.