Kuidas otsida ja asendada Vimis mitme faili vahel

Selles artiklis saate teada, kuidas tänu Vimile interaktiivselt paljude failide vahel otsida ja asendada vaid kahe käsuga.

Ehkki sõnade otsimiseks ja asendamiseks ühes failis on palju meetodeid, mida teete siis, kui teil on string, mida värskendada mitmel üksteisega mitteseotud failil, millel kõigil on erinevad nimed? Kasutate loomulikult käsurea tööriistade jõudu!

Esiteks peate sisestama findkõik failid, mida soovite muuta. Tõhusate otsingupäringutega koos pingutamist findpiirab tegelikult ainult teie kujutlusvõime.

Siin on lihtne näide, mis leiab Pythoni failid:

find . -name '*.py' 

-nameTest otsib muster, nagu kõik failid laiendiga .py. Kuid findsuudab teiste testitingimustega, sealhulgas -regextestidega, palju rohkem teha . Käivitage find --helpvalikute hulga nägemiseks.

Häälestage oma otsingut veelgi, kasutades grepselleks ainult faile, mis sisaldavad muudetavat stringi, näiteks lisades:

grep -le '\' 

-lValiku abil lihtsalt faili nimed kõik failid, mis sisaldavad mustrit (tähistatud -e), et mängu "vaal".

Võite kasutada ka Vimi muljetavaldavat, :bufdomis võimaldab teil sama käsku käivitada mitme puhvri vahel. See töötab interaktiivselt kõigi nende failidega ilma iga faili avamise, salvestamise ja sulgemise ükshaaval.

Ühendame teie võimsad find+ greptulemused VIM-i järgmisega:

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

Otsingu laiendamiseks Vimile tagurpidi laiendamise kasutamine avab mitu puhvrit, mis on kasutamiseks valmis. (Tehke :h backtick-expansionVimis rohkem.)

Nüüd saate rakendada käsu Vim :bufdokõigile neile failidele ja teha selliseid toiminguid nagu interaktiivne otsimine ja asendamine:

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

gJaoks "globaalne" muutub sündmuste struktuuris kõigil liinidel. eJätavad vigu kui muster ei leitud. cVõimalus muudab selle interaktiivne. Kui tunnete end enesekindlalt, võite selle muudatuste tegemiseks ilma neid üle vaatamata jätta.

Kui olete kõigi puhvrite läbinud, salvestage kogu töö, mille olete lõpetanud:

:bufdo wq! 

Seejärel peesitage oma säästetud aja ja vaeva hiilguses.