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 find
sve datoteke koje želite promijeniti. Nizanje onoga što je učinkovito za upite za pretraživanje find
stvarno je ograničeno samo vašom maštom.
Evo jednostavnog primjera koji pronalazi Python datoteke:
find . -name '*.py'
U -name
ispitivanju traži uzorak, kao što su sve datoteke završava .py
. Ali find
možete učiniti puno više s drugim uvjetima ispitivanja, uključujući -regex
testove. Trčite find --help
da vidite mnoštvo mogućnosti.
Dalje prilagodite svoje pretraživanje tako grep
da dobijete samo datoteke koje sadrže niz koji želite promijeniti, na primjer dodavanjem:
grep -le '\'
-l
Opcija 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 :bufdo
koji 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
+ grep
rezultate 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-expansion
U Vimu potražite još.)
Sada možete primijeniti naredbu Vim :bufdo
na sve ove datoteke i izvoditi radnje poput interaktivnog pretraživanja i zamjene:
:bufdo %s/a whale/a bowl of petunias/gce
For g
za "globalno" promijenit će pojave uzorka na svim linijama. e
Će izostaviti pogreške ako je uzorak nije pronađen. c
Opcija č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.