Getting Started with Vi Editor in Unix: Essential Commands & Tips

A beginner-friendly guide to using the Vi editor in Unix. Learn basic navigation, editing, and saving commands to boost your productivity in the terminal.

vi is a command-line text editor originally created for the Unix operating system.

The name vi is derived from the shortest unambiguous abbreviation for the command visual; the command in question switches the line editor ex to visual mode.

Most of the network administrators are familiar with this little editor in Unix, because they use it regularly. But, for first timers, it’s most difficult editor. First timers have to remember all commands and keys to edit a simple file.

vi has two modes, Insert mode and Command mode. In insert mode, you can add/edit the texts in file. And in command mode, you can navigate and command the editor like save, exit, copy, paste, etc.

These are the commands and keys for those who want to get familiar with vi editor.

Command to open the vi editor:

vi filename

This command creates a new file if filename is not available in current directory. By default, vi begins in command mode.

Basic Commands for vi Editor

To start the insert mode, you can use following keys:

Insert text at beginning of line:I
Insert text at cursor:i
append text after cursor:a
Append text at line end:A
Open line above cursor:O
Open line below cursor:o

To switching back, and start the Command mode, press [ESC]

Most commands execute as soon as typed except for “colon” commands which execute when you press the return key.

Cursor Movement Commands for vi Editor

For cursor movement in command mode, you can use following commands/keys:

Go to beginning of line0
Go to end of line$
Go to line number ##:##
Go to line nnG
Go to last lineG
Left 6 chars6h
Move left, down, up, righth j k l
Move left, down, up, right← ↓ ↑ →
Scroll Backward 1 screen[ctrl] b
Scroll Forward 1 screen[ctrl] f
Scroll by sentence forward/backward( )
Scroll by word forward/backwardw b
Scroll by paragraph forward/backward{ }
Scroll Up 1/2 screen[ctrl] u
Scroll Down 1/2 screen[ctrl] d

Content Edit Commands for vi Editor

For deleting/changing text/character in command mode, you can use following commands/keys:

Change wordcw
Replace one characterr
Delete worddw
Delete text at cursorx
Delete entire line (to buffer)dd
Delete (backspace) text at cursorX
Delete 5 lines (to buffer)5dd
Delete current to end of lineD
Delete lines 5-10:5,10d

You can use the following commands/keys for editing the content in command prompt:

Copy lineyy
Copy n linesnyy
Copy lines1-2 /paste after 3:1,2t3
Move lines 4-5/paste after 6:4,5m6
Paste above current lineP
Paste below current linep
Undo all changes to lineU
Undo previous commandu
Join previous lineJ
Find next string occurrencen
Search backward for string?string
Search forward forstring/string
% (entire file) s (search and replace) /old text with new/ c (confirm) g (global – all):%s/oldstring/newstring/cg
Ignore case during search:set ic
Repeat last command.

Save or Quit Commands for vi Editor

To save or quit the command mode, you can use following commands/keys:

Save changes to buffer:w
Save changes and quit vizz or :wq
Save file to new file:w file
Quit without saving:q!
Save lines to new file:10,15w file

In all of the above commands, a number n will tell vi to repeat that command n times.

:syntax on Turn on syntax highlighting
:syntax off Turn off syntax highlighting
:set number Turn on Line numbering (shorthand :set nu)
:set nonumber Turn off Line numbering (shorthand :set nonu)

:set ignorecase Ignore case sensitivity when searching
:set noignorecase Restore case sensitivity (default)

Comments

comments