Vim sök och ersätt

Vim Search Replace



Vim är en avancerad och populär textredigerare som kommer förinstallerad i de flesta Linux -distributioner. Det är en kommandoradsbaserad textredigerare som oftast används i icke-GUI-baserade operativsystem. Det är mycket konfigurerbart och har många funktioner. En viktig punkt när det gäller Vim är att den är mycket optimerad för upprepning.

I den här artikeln kommer vi att förklara en av dess mest användbara funktioner som är sökning och ersättning. Med en handfull konfiguration kan du söka vad du vill med den brinnande hastigheten och med finare granularitet.







Metod #1 Hitta och ersätt en förekomst i taget (med kommandot snedstreck och prick)

Det enklaste sättet att söka och ersätta ett ord i Vim är med kommandot snedstreck och prick. Snedstreck (/) kan användas för att söka efter ett ord medan pricken (.) Kan användas för att ersätta det ordet.



Följ de enkla stegen nedan för att söka och ersätta alla ord i Vim -redigeraren:



  • Öppna filen i Vim
  • Tryck på snedstreck ( /) tillsammans med söktermen som / search_term och tryck på Enter. Det markerar det valda ordet.
  • Slå sedan på knapptryckningen cgn för att ersätta det markerade ordet och ange ersättningsterm
  • Återgå till normalt läge. Tryck sedan på n för att gå till nästa förekomst av söktermen.
  • Tryck sedan på pricken (.) Om du vill ersätta nästa förekomst med samma ersättnings_term annars tryck igen på n -knappen för att gå till nästa förekomst.

Det är den snabbaste och bästa metoden för grundläggande sökning och ersätter funktioner eftersom det bara innebär några knapptryckningar och mindre avbrott i ditt nuvarande arbete. För att söka efter ett ord som förekommer för många gånger blir det dock en repetitiv och tidskrävande uppgift.





Med Vim finns det ett annat bättre sätt att undvika denna repetitiva uppgift som använder kommandot substitute.

Metod #2 Hitta och ersätt med kommandot Substitute

Ersättningskommandot kan användas för att utföra grundläggande till avancerad sökning och ersätta funktioner med ett enda kommando. Syntaxen för detta kommando är:



$: s/<sökterm> /<Ersätt_term> /alternativ

Observera att du måste ange detta kommando i normalt läge.

Var

  • S: står för substitut
  • search_term: ordet du vill söka och ersätta
  • Ersätt_term: ordet som du vill ersätta det med
  • Alternativ: c (för bekräftelse), g (byt ut alla förekomster på en rad), i (för att ignorera fallet)

Sök och ersätt

För att utföra grundläggande sökning och ersättning med kommandot substitute, använd följande syntax:

:%s/<sökterm> /<Ersätt_term> /g

Det här kommandot kommer att ersätta alla instanser av search_term med Replate_term.

Detta är till exempel vår exempeltext:

Ubuntu är ett av de mest använda Linux -operativsystemen. Ubuntu innehåller tusentals användbara program. Med kommandoraden i Ubuntu kan du utföra nästan vilken typ av uppgift som helst.

För att ersätta varje förekomst av Ubuntu med Debian i följande text skulle följande kommando användas:

:%s/Ubuntu/Debian/g

Sök och ersätt på en enda rad

Om du vill söka och ersätta förekomsten av ett ord endast på en enda rad istället för hela filen använder du följande syntax:

: s/<sökterm> /Ersätt_term/g

Till exempel, för att ersätta förekomsten av Ubuntu med Debian i exemplet ovan, skulle följande kommando utan % -symbolen användas:

: s/Ubuntu/Debian/g

Sök och ersätt med bekräftelse

Om du vill bli ombedd att bekräfta innan söktermen ersätts använder du c i slutet av sökkommandot enligt följande:

: s/<sökterm> /<Ersätt_term> /gc

Kommandot ovan kommer att be om bekräftelse före varje ersättning (Ange y för ja medan n för nej).

Skift och byt skiftlägeskänslig

När du utför sök och ersätt i Vim är det som standard skiftlägeskänsligt. Du kan utföra en sökning som inte är skiftlägeskänslig genom att lägga till i i slutet av kommandot enligt följande:

: s/<sökterm> /<Ersätt_term> /ge

Till exempel, för att söka efter termen Ubuntu oavsett fall (UBUNTU, Ubuntu, ubuntu, uBuntu), skulle följande kommando användas:

: s/ubuntu/debian/ge

Sök och ersätt hela ordet

Som standard söker substitutkommandot efter en matchning, oavsett om den är delvis eller fullständig. Om du vill matcha den exakta söktermen och sedan ersätta den med ersätter_term, bifogar du söktermen inom.

Till exempel vill du i vissa dokument söka och ersätta det exakta ordet du av mig. I så fall skulle följande kommando användas:

: s/<du> /I/

Det hittar ordet du och ersätter det med mig. Det kommer dock inte att ersätta orden som dina.

Sök och ersätt ord bland vissa rader

För att söka efter ett ord bland de specifika raderna istället för bara en rad eller hela filen kan följande syntax användas:

:<start_line>,<slutlinje>s/<sökterm> /<Ersätt_term> /g

Till exempel, för att söka och ersätta förekomsten av Ubuntu med Debian från rader som sträcker sig från 3 till 8 i någon fil, skulle kommandot vara:

:1, 10s/ubuntu/debian/g

För att söka och ersätta förekomsten av ett ord från den aktuella raden till nästa x antal rader, skulle följande syntax användas:

: s/sökterm/Ersätt_term/g x

På samma sätt, för att söka och ersätta förekomsten av ett ord från den aktuella raden till den sista raden: följande syntax skulle användas:

:.,$ s/sökterm/Ersätt_term/g

SLUTSATS

I den här artikeln har vi lärt oss de två kommandorads sätten att söka och ersätta alla ord i en Vim-editor. Det första kommandot som använde snedstreck och prick är den enklaste och enklaste metoden men det visar sig vara repetitivt när du söker och ersätter ett ord som förekommer för många gånger. Det andra kommandot som är substitutionskommando en gång kan verka svårt och komplext, men när du börjar öva på det kommer du att hitta det extremt användbart i flera scenarier.