Vim
Overview
Detail
Move
Search & Replace
whole file
:%s/foo/bar/g
Find each occurrence of ‘foo’ (in all lines), and replace it with ‘bar’.
:s/foo/bar/g
Find each occurrence of ‘foo’ (in the current line only), and replace it with ‘bar’.
:%s/foo/bar/gc
Change each ‘foo’ to ‘bar’, but ask for confirmation first.
:%s/<foo>/bar/gc
Change only whole words exactly matching ‘foo’ to ‘bar’; ask for confirmation.
:%s/foo/bar/gci
Change each ‘foo’ (case insensitive due to the i flag) to ‘bar’; ask for confirmation.
:%s/foo\c/bar/gc
is the same because \c makes the search case insensitive. This may be wanted after using:set noignorecase
to make searches case sensitive (the default).
Search range:
:s/foo/bar/g
Change each ‘foo’ to ‘bar’ in the current line.
:%s/foo/bar/g
Change each ‘foo’ to ‘bar’ in all the lines.
:5,12s/foo/bar/g
Change each ‘foo’ to ‘bar’ for all lines from line 5 to line 12 (inclusive).
:’a,’bs/foo/bar/g
Change each ‘foo’ to ‘bar’ for all lines from mark a to mark b inclusive (see Note below).
:’<,’>s/foo/bar/g
When compiled with +visual, change each ‘foo’ to ‘bar’ for all lines within a visual selection. Vim automatically appends the visual selection range (‘<,’>) for any ex command when you select an area and enter :. Also, see Note below.
:.,$s/foo/bar/g
Change each ‘foo’ to ‘bar’ for all lines from the current line (.) to the last line ($) inclusive.
:.,+2s/foo/bar/g
Change each ‘foo’ to ‘bar’ for the current line (.) and the two next lines (+2).
:g/^baz/s/foo/bar/g
Change each ‘foo’ to ‘bar’ in each line starting with ‘baz’.
* Note: As of Vim 7.3, substitutions applied to a range defined by marks or a visual selection (which uses a special type of marks ‘< and ‘>) are not bounded by the column position of the marks by default. Instead, Vim applies the substitution to the entire line on which each mark appears unless the \%V atom is used in the pattern like: :’<,’>s/\%Vfoo/bar/g.