vim
Hitta och ersätta
Sök…
Ersätt kommando
Detta kommando:
:s/foo/bar/g
ersätter varje förekomst av foo med bar på den aktuella linjen.
fool around with a foodie
blir
barl around with a bardie
Om du lämnar den sista /g ersätter den bara den första förekomsten på linjen. Till exempel,
:s/foo/bar
På den föregående raden skulle bli
barl around with a foodie
Detta kommando:
:5,10s/foo/bar/g
utför samma substitution i raderna 5 till 10.
Detta kommando
:5,$s/foo/bar/g
utför samma substitution från rad 5 till slutet av filen.
Detta kommando:
:%s/foo/bar/g
utför samma substitution på hela bufferten.
Om du är i visuellt läge och träffar kolon kommer symbolen '<,'> att visas. Du kan sedan göra det här
:'<,'>s/foo/bar/g
och att ersättningen sker inom ditt visuella lägesval.
Detta kommando:
:%s/foo/bar/gc
motsvarar kommandot ovan men ber om bekräftelse vid varje händelse tack vare flaggan /c (för "bekräftelse").
Se :help :s och :help :s_flags .
Se även detta avsnitt om kommandorader .
Byt ut med eller utan vanliga uttryck
Detta ersättningskommando kan använda Regular Expressions och kommer att matcha varje förekomst av foo följt av vilket som helst (ett) tecken sedan perioden . i Regular Expressions matchar alla tecken, följaktligen kommer följande kommando att matcha alla förekomster av foo följt av alla tecken i den aktuella raden.
:s/foo./bar/g
1 fooing fooes fool foobar foosup
kommer att bli
1 barng bars bar barar barup
Om du vill matcha det bokstavliga . period kan du undvika det i sökfältet med en backslash \ .
:s/foo\./bar/g
1 fooing fooes foo.l foo.bar foosup
kommer att bli
1 fooing fooes barl barbar foosup
Eller inaktivera alla matchande mönster genom att följa s kommandot med no .
:sno/foo./bar/g
1 fooing fooes foo.l foo.bar foosup
kommer att ge upp ett fel
E486: Pattern not found