vi editor command summary

vi editor command summary

vi editor command summary 150 150 Roderick Derks

Starting vi



Command Description
vi file start at line 1 of file
vi +n file start at line n of file
vi + file start at last line of file
vi +/pattern file start at pattern in file
vi -r file recover file after a system crash

Saving files and quitting vi


Command Description
:e file edit file (save current file with :w first)
:w save (write out) the file being edited
:w file save as file
:w! file save as an existing file
:q quit vi
:wq save the file and quit vi
😡 save the file if it has changed and quit vi
:q! quit vi without saving changes

Moving the cursor


Keys pressed Effect
h left one character
l or <Space> right one character
k up one line
j or <Enter> down one line
b left one word
w right one word
( start of sentence
) end of sentence
{ start of paragraph
} end of paragraph
1G top of file
nG line n
G end of file
<Ctrl>W first character of insertion
<Ctrl>U up ½ screen
<Ctrl>D down ½ screen
<Ctrl>B up one screen
<Ctrl>F down one screen

Inserting text


Keys pressed Text inserted
a after the cursor
A after last character on the line
i before the cursor
I before first character on the line
o open line below current line
O open line above current line

Changing and replacing text


Keys pressed Text changed or replaced
cw word
3cw three words
cc current line
5cc five lines
r current character only
R current character and those to its right
s current character
S current line
~ switch between lowercase and uppercase

Deleting text


Keys pressed Text deleted
x character under cursor
12x 12 characters
X character to left of cursor
dw word
3dw three words
d0 to beginning of line
d$ to end of line
dd current line
5dd five lines
d{ to beginning of paragraph
d} to end of paragraph
:1,. d to beginning of file
:.,$ d to end of file
:1,$ d whole file

Using markers and buffers


Command Description
mf set marker named “f''
`f go to marker “f''
´f go to start of line containing marker “f''
"s12yy copy 12 lines into buffer “s''
"ty} copy text from cursor to end of paragraph into buffer “t''
"ly1G copy text from cursor to top of file into buffer “l''
"kd`f cut text from cursor up to marker “f'' into buffer “k''
"kp paste buffer “k'' into text

Searching for text


Search Finds
/and next occurrence of “and'', for example, “and'', “stand'', “grand''
?and previous occurrence of “and''
/^The next line that starts with “The'', for example, “The'', “Then'', “There''
/^The\> next line that starts with the word “The''
/end$ next line that ends with “end''
/[bB]ox next occurrence of “box'' or “Box''
n repeat the most recent search, in the same direction
N repeat the most recent search, in the opposite direction

Searching for and replacing text


Command Description
:s/pear/peach/g replace all occurrences of “pear'' with “peach'' on current line
:/orange/s//lemon/g change all occurrences of “orange'' into “lemon'' on next line containing “orange''
:.,$/\<file/directory/g replace all words starting with “file'' by “directory'' on every line from current line onward, for example, “filename'' becomes “directoryname''
:g/one/s//1/g replace every occurrence of “one'' with 1, for example, “oneself'' becomes “1self'', “someone'' becomes “some1''

Matching patterns of text


Expression Matches
. any single character
* zero or more of the previous expression
.* zero or more arbitrary characters
\< beginning of a word
\> end of a word
\ quote a special character
\* the character “*''
^ beginning of a line
$ end of a line
[set] one character from a set of characters
[XYZ] one of the characters “X'', “Y'', or “Z''
[[:upper:]][[:lower:]]* one uppercase character followed by any number of lowercase characters
[^set] one character not from a set of characters
[^XYZ[:digit:]] any character except “X'', “Y'', “Z'', or a numeric digit

Options to the :set command


Option Effect
all list settings of all options
ignorecase ignore case in searches
list display <Tab> and end-of-line characters
mesg display messages sent to your terminal
nowrapscan prevent searches from wrapping round the end or beginning of a file
number display line numbers
report=5 warn if five or more lines are changed by command
term=ansi set terminal type to “ansi''
terse shorten error messages
warn display “[No write since last change]'' on shell escape if file has not been saved


Roderick Derks

Liefhebber van fietsen, van het oplossen van IT puzzels, en van het delen van informatie om anderen te helpen.

All stories by:Roderick Derks

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

    Your Name (required)

    Your Email (required)


    Your Message

      Your Name (required)

      Your Email (required)


      Your Message