Ovaj članak opisuje kako pronaći i zamijeniti tekst u Vim / Vi.
Vim je najpopularniji uređivač teksta naredbenog retka. Dolazi predinstaliran na macOS i većinu Linux distribucija. Pronalaženje i zamjena teksta u Vimu je brzo i jednostavno.
Osnovno pronalaženje i zamjena #
U Vimu možete pronaći i zamijeniti tekst pomoću :zamjena
(: s
) naredba.
Da biste pokrenuli naredbe u Vimu, morate biti u normalnom načinu, zadanom načinu rada prilikom pokretanja uređivača. Da biste se vratili u uobičajeni način rada iz bilo kojeg drugog načina, samo pritisnite tipku 'Esc'.
Općeniti oblik zamjenske naredbe je kako slijedi:
: [raspon] s / uzorak / niz / [zastavice] [broj]
Naredba pretražuje svaki redak u [raspon]
za uzorak
, i zamjenjuje ga s niz
. [računati]
je pozitivan cijeli broj koji množi naredbu.
Ako ne [raspon]
i [računati]
dati su, zamjenjuje se samo obrazac pronađen u trenutnom retku. Trenutni redak je redak na kojem se nalazi pokazivač.
Na primjer, da biste pretražili prvo pojavljivanje niza 'foo' u trenutnom retku i zamijenili ga 'bar', koristili biste:
: s / foo / bar /
Da biste zamijenili sve pojave uzorka pretraživanja u trenutnom retku, dodajte g
zastava:
: s / foo / bar / g
Ako želite pretražiti i zamijeniti obrazac u cijeloj datoteci, upotrijebite znak postotka %
kao raspon. Ovaj znak označava raspon od prvog do zadnjeg retka datoteke:
:% s / foo / bar / g
Ako je niz
dio je izostavljen, smatra se praznim nizom, a podudarni obrazac se briše. Sljedeća naredba briše sve instance niza 'foo' u trenutnom retku:
: s / foo // g
Umjesto znaka kosa crta (/
), možete koristiti bilo koji drugi ne-alfanumerički jednobajtni znak, osim kao graničnik. Ova je opcija korisna kada u uzorku pretraživanja ili zamjenskom nizu imate znak '/'.
: s | foo | bar |
Da biste potvrdili svaku zamjenu, koristite c
zastava:
: s / foo / bar / gc
zamijeniti crticom (y / n / a / q / l / ^ E / ^ Y)?
Pritisnite g
zamijeniti šibicu ili l
zamijeniti utakmicu i dati otkaz. Pritisnite n
preskočiti utakmicu i q
ili Esc
napustiti zamjenu. The a
opcija zamjenjuje utakmicu i sve preostale događaje utakmice. Za pomicanje zaslona prema dolje koristite CTRL + Y
, a za pomicanje prema gore upotrijebite CTRL + E
.
Kao obrazac pretraživanja možete koristiti i regularne izraze. Naredba u nastavku zamjenjuje sve retke koji počinju s 'foo' s 'Vim je najbolji':
:% s / ^ foo.* / Vim je najbolji / gc
The ^
(znak za karetu) odgovara početku retka i .*
odgovara bilo kojem broju bilo kojih znakova.
Osjetljivost na velika i mala slova #
Prema zadanim postavkama, operacija pretraživanja razlikuje velika i mala slova; traženje "FOO" neće odgovarati "Foo".
Da biste zanemarili mala slova za obrazac pretraživanja, upotrijebite ja
zastava:
: s / Foo / bar / gi
Drugi način prisiljavanja na ignoriranje predmeta je dodavanje \ c
nakon obrasca pretraživanja. Na primjer, / Linux \ c
vrši ignoriranje pretraživanja predmeta.
Ako ste promijenili zadanu postavku velikih i malih slova i želite pretražiti velika i mala slova, upotrijebite Ja
zastava:
: s / foo / bar / gi
Velika slova \ C
nakon što obrazac također forsira pretragu podudaranja velikih i malih slova.
Raspon pretraživanja #
Kada nije naveden raspon, zamjenska naredba djeluje samo u trenutnom retku.
Raspon može biti jedan redak ili raspon između dva retka. Specifikatori linija odvojeni su znakom ,
ili ;
likova. Raspon se može odrediti pomoću apsolutnog broja retka ili posebnih simbola.
Na primjer, za zamjenu svih pojava 'foo' u 'bar' u svim redovima koji počinju od retka 3 do retka 10, koristili biste:
: 3,10s / foo / bar / g
Raspon je inkluzivan, što znači da su prvi i zadnji redak uključeni u raspon.
Točka .
znak označava trenutnu liniju i $
- znak dolara posljednji redak. Da biste zamijenili 'foo' u svim redovima počevši od trenutnog retka do zadnjeg:
:.,$ s / foo / bar /
Specifikator retka također se može postaviti pomoću simbola '+' ili '-', nakon čega slijedi broj koji se dodaje ili oduzima od prethodnog broja retka. Ako je broj nakon simbola izostavljen, zadano je na 1.
Na primjer, da biste zamijenili svaki "foo" s "bar" počevši od trenutnog retka i četiri sljedeća retka, upišite:
:.,+4s / foo / bar / g
Zamjena cijele riječi #
Naredba zamjene traži obrazac kao niz, a ne kao cijelu riječ. Ako ste, na primjer, tražili "gnu", pretraga pronalazi podudaranja gdje je "gnu" ugrađen u veće riječi, poput "cygnus" ili "magnum".
Da biste pretražili cijelu riječ, upišite \<
da biste označili početak riječi, unesite obrazac pretraživanja, upišite \>
za označavanje kraja riječi:
Na primjer, za pretraživanje riječi "foo" koju biste koristili \
:
: s / \/bar/
Zamjenska povijest #
Vim prati sve naredbe koje izvršavate u trenutnoj sesiji. Da biste pregledali povijest prethodnih zamjenskih naredbi, unesite : s
i pomoću tipki sa strelicama gore / dolje pronađite prethodnu zamjensku operaciju. Da biste pokrenuli naredbu, jednostavno pritisnite Unesi
. Također možete urediti naredbu prije izvođenja operacije.
Primjeri #
Redci komentara (dodaj #
prije crte) od 5 do 20:
: 5,20s / ^ / # /
Komentirajte retke od 5 do 20, vratite prethodne promjene:
: 5,20s / ^ # //
Zamijenite sve slučajeve "jabuka", "naranča" i "mango" s "voćem":
:% s / jabuka \ | naranča \ | mango / voće / g
Uklonite prazni razmak na kraju svakog retka:
:% s / \ s \ + $ // e
Zaključak #
Pretraživanje i zamjena moćna je značajka Vima koja vam omogućuje brzo mijenjanje teksta.
Slobodno ostavite komentar ako imate pitanja.