This post is about the colon commands in Vim. For example, the substitution command takes the form of

:[range]s/<pattern>/<replacement>/[options]


Such commands are inherited from a line editor called Ex (or even Ex’ predecessor Ed). Other common Ex commands include :e, :q, :r, :w, :3 (or any other line number).

## commands and symbols

A full list of Ex commands and range symbols are

keys meaning
a append text
c change (replace) text
d delete, e.g., 3,5d
e edit file
i insert text
f show file information or switch file name
g global action, e.g., g/bad/d
m move, e.g., 1,3m$ p print lines q quit r read file into buffer s substitute t copy u undo the last command v or g! global action on lines that don’t contain a pattern w write to file / context search, e.g., /word/+1d . current line $ last line
% every line
+ and - line number arithmetics
, range, e.g., 8,20
; relative range, e.g., .;+5
0 before 1st line

Here the commands a, c, i trigger an input terminal at the bottom of Vim and a line of a single . ends the input.

You can test these keys directly in Vim, or read the help information. For example, :help :a. B. W. Kernighan’s A Tutorial Introduction to the UNIX Text Editor is also a good short reference.

## miscellaneous information

• Lineage of Unix text editors:
• The delimiter for :s doesn’t have to be /. See here
• In the replacement string, & represents the matched pattern
• The tool sed derives from Ed
• The name of grep comes from the Ed command g/re/p where re represents a regular expression, see the story in B. W. Kernighan’s book UNIX: A History and a Memoir. It is also clear why grep -v means inverted selection.