Vim – keresés, csere

Vim alapokVim ismertető második részében szintén alapvető, egyszerű témákat érintünk. Bár a Vim összetett feladatokra is alkalmas, de mi jelenleg csak a faék egyszerűségű teendőket vizsgáljuk. Ott is a (szerintem) legegyszerűbb megvalósítást.

Vim megnyitás

A fájl megnyitása szerkesztésre már működik, és ki is próbáltátok. A legtöbbet egy-egy konfigurációs fájl szerkesztésekor használom, így igen kellemes lenne, ha ott nyitná meg, ahol szerkeszteni akarom. Jellemzően egy-egy bejegyzést kell megváltoztatni, így a kulcsszót ismerem. A Vim képes egy adott sorszámú sort megnyitni a

vim +15 minta.txt

paranccsal. Itt már érdemes megjegyezni, hogy a megnyitott fájlban hasonlóképp ugorhatsz a megadott sorra 15G vagy ami kényelmesebb :15 paranccsal.

Kissé hasznosabb megoldás, ha már az adott kulcsszóra ugrunk, ha van erre lehetőség.

vim /minta minta.txt

Ekkor megnyitja a minta.txt állományunkat és (ha van ilyen), az első minta szóra ugrik. Szuper!

Keresés a Vim szerkesztőben

Itt nagyon sokféle megoldás van, és érdemes az első időben az alapoknál maradni. A keresés jele már ismert a / így ha beírod a /akármi parancsot a szöveg vége felé keresni kezdi az akármi szöveget.

n ugrás a következő találatra (next)
// ugrás a következő találatra (next)
N ugrás az előző találatra
?? ugrás az előző találatra

Ahogy látni a találatok közti navigálás nem túl összetett.

Ha nem a vége felé szeretnél keresni, akkor a

?akármi

a megfelelő.

Ez lehet, hogy kényelmetlen, hiszen ha a szöveg közepén vagyunk, az összes találatot keressük, akkor nem előre, vagy visszafelé akarunk majd két részletben ugrálni, hanem szép sorban az összes találatot megkeresni. Ilyenkor érdemes a szöveg elejére ugorni, majd onnét indítani egy keresést.

gg a dokumentum elejére ugrik
G a dokumentum utolsó sorának elejére ugrik

Itt is észrevehető, hogy a parancsok logikusak, hiszen az elejére a gg a végére a G, az egyik irányba való keresés /, majd a következő találatra ugrás //.
Ami már haladóbb, de érdemes tudni: a keresés nem csak konkrét karaktersorra történhet, hanem regexp-ekre is. Bár az első időben elég, ha az alapparancsokkal vagyunk tisztában, de haladóbb időszakban már a regexp-ek is jól jönnek.

/ Ctrl+r Ctrl+w igen hasznos megoldás, mert a kijelölt szót, karakterláncot húzza be a keresésbe.

A keresésnél nem árt, ha ismerjük a teljes szó keresést, azaz csak azt jelöli ki, találja meg ami pontosan egyezik:

/ \‹alma\› csak az alma szót, de nem az almafa, almamag találatot emeli ki.  A „kisebb, mint” és a „nagyobb mint” jel a AltGr+í és AltGr+y gombbal csalogatható elő magyar billentyűzeten. 

A keresési módok ennél sokkal összetettebbek is lehetnek!

Csere, alapfokon

Kissé (nekem az elején nagyon) fura megoldása van, messze nem olyan egyszerű, mint grafikus felületen. De amikor már az első pár keres, csere művelet mögöttünk van, már azon csodálkozunk, hogy miért is nem így tettünk eddig.

A csere általános formája :[tartomány]s/mit/mire/ [opciók] [szám]. A „mit” egy karakterlánc, de akár regexp is lehet. Az „opció” alapvetően háromféle lehet:

g minden előfordulást lecserél (az adott sorban)
c jóváhagy minden cserét kérdezés nélkül
i nem különbözteti meg a kis- és nagybetűket

:s /alma/körte az aktuális sorban az alma első előfordulását körte-re cseréli
:s /alma/körte/g az aktuális sorban az alma minden előfordulását körte-re cseréli
:%s /alma/körte/g   a teljes fájlban az alma minden előfordulását körte-re cseréli
:1,$s /alma/körte/g a teljes fájlban az alma minden előfordulását körte-re cseréli

Ismerős? Sed és hasonló témában jártas emberek itt is nagyon jól eligazodnak majd. A sed stb. nagyon jó példa, hiszen ott is nagyon pontosan megadhatjuk a keresési feltételt és a cserélési módokat.

Az első paraméter a tartomány, amivel megadhatjuk azt a sortartományt, amiben dolgozhat.

:1,10s /egy/kettő/g az első tíz sorban az egy minden előfordulását kettő-re cseréli.

Ha szelektálni szeretnénk, akkor megfelelő a „c” kapcsoló:

:1,$s /alma/körte/gc megkeresi a következő alma szót, de megáll, és további engedélyre vár, minden előfordulásnál megkérdi tőlünk, hogy „komolyan gondoljuk-e”. A kérdésre a következő válaszokat lehet adni:

y (yes) cserélje le ezt az illeszkedést
l (last) cserélje le ezt az illeszkedést és fejezze be a cserét
n (next) lépje át ezt az illeszkedést
Esc a csere befejezése
q (quit) a csere befejezése
a (all) cserélje le ezt és minden további illeszkedést.

Most idáig jutottunk el, érdemes begyakorolni, illetve ami hasonlóan fontos: a saját feladatunknak, szokásainknak megfelelő témában keresgélni példákat az interneten. Igen sok leírás, példa, megoldás található, így a tanulásnak nincs akadálya! Igen hasznos ez az oldal, tippek, trükkök.

Related Posts