Hogyan kereshet és cserélhet több fájlt a Vim-ben

Ebben a cikkben megtudhatja, hogyan lehet interaktív módon keresni és cserélni sok fájlt csak két paranccsal, köszönhetően a Vim-nek.

Noha számos módszer létezik a szavak keresésére és cseréjére egyetlen fájlban, mit tegyen, ha egy karaktersorozatot szeretne frissíteni több, egymással nem összefüggő fájlban, mindegyik más néven? Természetesen kihasználja a parancssori eszközök erejét!

Először meg kell adnia az findösszes módosítani kívánt fájlt. A hatékony keresési lekérdezések összefogását findvalójában csak a fantáziád korlátozza.

Íme egy egyszerű példa, amely megtalálja a Python fájlokat:

find . -name '*.py' 

A -nameteszt mintát keres, például az összes végződő fájlt .py. De findsokkal többet tehet más vizsgálati feltételekkel, beleértve a -regexteszteket is. Futtassa find --helpa lehetőségek sokaságának megtekintéséhez.

Hangolja tovább a keresést azáltal grep, hogy csak azokat a fájlokat szerzi be, amelyek tartalmazzák a módosítani kívánt karakterláncot, például hozzáadva:

grep -le '\' 

Az -lopció csak az összes fájl fájlnevét adja meg, amely mintát tartalmaz (jelölve -e), amely megfelel a „bálnának”.

Használhatja a Vim lenyűgöző funkcióját is, :bufdoamely lehetővé teszi, hogy ugyanazt a parancsot több pufferen futtassa. Interaktívan működik mindezekkel a fájlokkal, anélkül, hogy minden fájl egyszerre megnyílna, elmentené és bezárná az egyes fájlokat.

Csatlakoztassuk a hatékony find+ greperedményeket a Vim-hez a következőkkel:

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

A backtick-expandálás segítségével a keresés továbbítása a Vim számára több, készenléti puffert nyit meg. (További információkért tegye meg :h backtick-expansiona Vimben.)

Mostantól alkalmazhatja a Vim parancsot :bufdoezekre a fájlokra, és olyan műveleteket hajthat végre, mint az interaktív keresés és csere:

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

A g„globális” kifejezés megváltoztatja a minta előfordulását az összes vonalon. A ehiba kihagyja a hibákat, ha a minta nem található. Az copció ezt interaktívvá teszi. Ha magabiztosnak érzi magát, akkor elhagyhatja a változtatások elvégzéséhez anélkül, hogy mindegyiket átnézné.

Miután befejezte az összes puffert, mentse el az összes elvégzett munkát:

:bufdo wq! 

Majd sütkérezzen megtakarított ideje és fáradsága dicsőségében.