Vim

Created: 05 Jun 2016

Author:  Chen Xie

Overview

hotkey

Detail

Move

hotkey

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.

# linux