programmera.net -> vi -> normal     för utskrift      info@programmera.net

Search and Replace

1. Ersätta strängar i Vi
2. Generella syntaxen för ersättning

1. Ersätta strängar i Vi

I vi kan man ersätta text på ett sätt som påminner om Linuxkommandot  sed . Tabellen nedan ger exempel på hur ersättningar kan gå till:

Ersätt Beskrivning
:s/foo/some text/  Sök efter första förekosten av foo på denna rad och ersätt den med some text.
:0,$ s/foo/some text/g  Sök från filens första rad till den sista och ersätt foo med some text överallt där den påträffas.
:% s/foo/some text/g  Snabbare skrivsätt för raden ovan.
:.,$ s/foo/some text/  Sök från denna rad ner till filens sista rad efter foo och ersätt första förekomsten av foo på varje rad med some text där den påträffas.

2. Generella syntaxen för ersättning

Det generella uttrycket för substitution är:
:[range] s/söksträng/ersättningssträng/[&][c][e][g][i][I][p][r] [count]

  • (valfri) range bestämmer vilka rader i filen där du vill göra din ersättning (% betyder alla rader).
  • s betyder substitute.
  • söksträng är texten som ska ersättas, denna text kan vara ett reguljärt uttryck.
  • ersättningssträng är det som ska skrivas in istället för "söksträng".
  • (valfri) count bestämmer hur många ersättingar som ska göras.
Både range och count kan utelämnas, men då kommer ersättningen att bara ske på den raden där markören står. Vill du att hela filen ska genomsökas måste range vara 0,$. Nedan beskrivs de olika flaggorna:

Flaggor Betydelse Beskrivning
&  add  Behåll flaggorna från föregående substitution.
c  confirm  Bekräfta varje ersättning. y=ersätt, n=ersätt ej, ESC=avbryt.
e  no error  Om ingen sträng hittades, visa inget felmeddelande.
g  global  Innebär att vi vill ersätta alla förekomster av text1 på raden. Om g utelämnas ersätts bara första förekosten.
i  ignore case  Struna i STORA och små bokstäver söksträngen.
I  don't ignore case  Bry dig om STORA och små bokstäver i söksträngen.
p  print  Skriv ut senaste substitution.