Linux

Zoeken en vervangen in Vim / Vi

Zoeken en vervangen in Vim / Vi

Dit artikel beschrijft hoe u tekst in Vim / Vi . kunt vinden en vervangen.

Vim is de meest populaire teksteditor voor de opdrachtregel. Het is voorgeïnstalleerd op macOS en de meeste Linux-distributies. Tekst zoeken en vervangen in Vim gaat snel en gemakkelijk.

Basis zoeken en vervangen #

In Vim kun je tekst zoeken en vervangen met de :plaatsvervanger (:s) commando.

Om opdrachten in Vim uit te voeren, moet u zich in de normale modus bevinden, de standaardmodus bij het starten van de editor. Om vanuit een andere modus terug te gaan naar de normale modus, drukt u gewoon op de 'Esc'-toets.

De algemene vorm van het vervangende commando is als volgt:

:[bereik]s/patroon/string/[vlaggen] [aantal] 

De opdracht doorzoekt elke regel in [bereik] voor een patroon, en vervangt het door a draad. [tel] is een positief geheel getal dat de opdracht vermenigvuldigt.

Als Nee [bereik] en [tel] worden gegeven, wordt alleen het patroon in de huidige regel vervangen. De huidige regel is de regel waar de cursor staat.

Als u bijvoorbeeld wilt zoeken naar het eerste voorkomen van de tekenreeks 'foo' in de huidige regel en deze wilt vervangen door 'bar', gebruikt u:

:s/foo/bar/ 

Om alle exemplaren van het zoekpatroon in de huidige regel te vervangen, voegt u de g vlag:

:s/foo/bar/g 

Als u het patroon in het hele bestand wilt zoeken en vervangen, gebruikt u het percentageteken % als een bereik. Dit teken geeft een bereik aan van de eerste tot de laatste regel van het bestand:

:%s/foo/bar/g 

Als de draad onderdeel wordt weggelaten, het wordt beschouwd als een lege tekenreeks en het overeenkomende patroon wordt verwijderd. De volgende opdracht verwijdert alle instanties van de tekenreeks 'foo' in de huidige regel:

:s/foo//g 

In plaats van de schuine streep (/), kunt u elk ander niet-alfanumeriek enkelbyte-teken gebruiken, behalve als scheidingsteken. Deze optie is handig als je het '/'-teken in het zoekpatroon of de vervangende string hebt.

:s|foo|bar| 

Gebruik de om elke vervanging te bevestigen c vlag:

:s/foo/bar/gc 
vervangen door balk (y/n/a/q/l/^E/^Y)? 

druk op ja om de lucifer te vervangen of ik om de wedstrijd te vervangen en te stoppen. druk op nee om de wedstrijd over te slaan en q of Esc om te stoppen met substitutie. De een optie vervangt de wedstrijd en alle resterende exemplaren van de wedstrijd. Om het scherm naar beneden te scrollen, gebruik CTRL+Y, en om omhoog te scrollen, gebruik CTRL+E.

U kunt ook reguliere expressies gebruiken als zoekpatroon. Het commando hieronder vervangt alle regels die beginnen met 'foo' door 'Vim is the best':

:%s/^foo.*/Vim is de beste/gc 

De ^ (caret) symbool komt overeen met het begin van een regel en .* komt overeen met een willekeurig aantal tekens.

Hoofdlettergevoeligheid #

Standaard is de zoekbewerking hoofdlettergevoelig; zoeken naar "FOO" komt niet overeen met "Foo".

Om hoofdlettergebruik voor het zoekpatroon te negeren, gebruikt u de ik vlag:

:s/Foo/bar/gi 

Een andere manier om negeer te forceren is door toe te voegen \c na het zoekpatroon. Bijvoorbeeld, /Linux\c voert negeer case search uit.

Als u de standaardinstelling voor hoofdletters hebt gewijzigd en u wilt hoofdlettergevoelig zoeken, gebruikt u de ik vlag:

:s/foo/bar/gi 

hoofdletters \C nadat het patroon ook het zoeken naar hoofdletters dwingt.

Zoekbereik #

Als er geen bereik is opgegeven, werkt het vervangende commando alleen in de huidige regel.

Het bereik kan één regel zijn of een bereik tussen twee regels. De regelspecificaties worden gescheiden met de , of ; karakters. Het bereik kan worden gespecificeerd met behulp van het absolute regelnummer of speciale symbolen.

Als u bijvoorbeeld alle exemplaren van 'foo' door 'bar' wilt vervangen in alle regels vanaf regel 3 tot regel 10, gebruikt u:

:3,10s/foo/bar/g 

Het assortiment is inclusief, wat betekent dat de eerste en laatste regel in het assortiment zijn opgenomen.

De punt . teken geeft de huidige regel aan en $ - het dollarteken de laatste regel. Om 'foo' in alle regels te vervangen vanaf de huidige regel tot de laatste:

:.,$s/foo/bar/ 

De regelspecificatie kan ook worden ingesteld met het '+'- of '-'-symbool, gevolgd door een getal dat wordt opgeteld bij of afgetrokken van het voorgaande regelnummer. Als het nummer na het symbool wordt weggelaten, wordt dit standaard 1.

Als u bijvoorbeeld elke 'foo' wilt vervangen door 'bar' vanaf de huidige regel en de vier volgende regels, typt u:

:.,+4s/foo/bar/g 

Hele woord vervangen #

Het vervangende commando zoekt naar het patroon als een string, niet als een heel woord. Als u bijvoorbeeld naar "gnu" zocht, komt de zoekopdracht overeen waarbij "gnu" is ingesloten in grotere woorden, zoals "cygnus" of "magnum".

Als u op een heel woord wilt zoeken, typt u \< om het begin van een woord te markeren, voer het zoekpatroon in, typ \> om het einde van een woord te markeren:

Als u bijvoorbeeld naar het woord 'foo' wilt zoeken, gebruikt u \:

:s/\/bar/ 

Vervangingsgeschiedenis #

Vim houdt alle opdrachten bij die je in de huidige sessie uitvoert. Om door de geschiedenis te bladeren voor eerdere vervangingscommando's, typt u :s en gebruik de pijltoetsen omhoog/omlaag om een ​​eerdere vervangende bewerking te zoeken. Om de opdracht uit te voeren, drukt u gewoon op Enter. U kunt de opdracht ook bewerken voordat u de bewerking uitvoert.

Voorbeelden #

Commentaarregels (add # voor de lijn) van 5 tot 20:

:5,20s/^/#/ 

Verwijder commentaarregels van 5 tot 20, zet de vorige wijzigingen terug:

:5,20s/^#// 

Vervang alle instanties van 'appel', 'oranje' en 'mango' door 'fruit':

:%s/appel\|sinaasappel\|mango/fruit/g 

Verwijder de volgende witruimte aan het einde van elke regel:

:%s/\s\+$//e 

Conclusie #

Zoeken en vervangen is een krachtige functie van Vim, waarmee je snel wijzigingen in je tekst kunt aanbrengen.

Laat gerust een reactie achter als je vragen hebt.

Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...
Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...