GICT knowledge base
How to use Vi or Vim editor in Linux
Published
Almost all UNIX system available screen-oriented text editor is vi editor. Once we all learn about vi, we can use as fast and powerful editor. Vi uses combination of keystrokes in order to accomplish commands and it has no menus. To create a new file or edit an existing file from scratch we can use vi editor. Also we can use this editor to just read a text file. VIM is the improved version of vi editor. Here VIM stands for Vi IMproved. Some of the other ones are Nvi, Nano, Elvis and Vile.
The vi is commonly considered as the de facto standard in Unix editors because,
1) In all flavors of UNIX system vi is usually available.
2) Implementations of vi are very similar across the board.
3) Few resources are requiring.
4) According to many users, Vi is more user friendly.
Before we work on the VI editor, we need to understand its operation modes. There are two type operation modes.
1) Command mode
2) Insert mode
Command mode
Only for understanding commands vi editor opens this mode. In this mode we can move the cursor and cut, copy, past the text. Also we can save the changes we have made in this mode. We can use the right letter case because all commands are case sensitive.
Insert mode
This mode is used for inserting text in the file. By pressing “i” on the keyboard we can switch to insert mode. We can use any key taken as input for the file on which we are currently working on, once we are in insert mode. To go back to the command mode and save the changes we have made press the Esc key.
Starting vi editor
There are following way we can start using vi editor.
vi filename – Create a new file if it already does not exist, otherwise opens existing file.
vi -R filename – Opens an existing file in read only mode.
view filename – Opens an existing file in read only mode.
If we specify an existing file, then the editor would open it. If it does not exist, then we can create a new file.
Vi Editing commands
I — Insert at cursor (goes into insert mode)
A — Write after cursor (goes into insert mode)
A — Write at the end of line (goes into insert mode)
ESC — Terminate insert mode
U — Undo last change
o — Open a new line (goes into insert mode)
dd & 3dd –Delete line and Delete 3 lines.
D — Delete contents of line after the cursor
C — Delete contents of line after the cursor and insert new text. Press esc key to end insertion.
dw & 4dw — Delete word and Delete 4 words
cw — Change word
x — Delete character at cursor
r — Replace character
R — Overwrite characters from cursor onward
S — Substitute one character under cursor continue to insert
S — Substitute entire line and begin to insert at beginning of the line
~ — Change case of individual character
Make sure that we press the right command otherwise we will end up making undesirable changes to the file.
Control Commands
The following are useful commands which you can use along with Control Key.
CTRL+d — Move forward 1/2 screen
CTRL+f — Move forward one full screen
CTRL+u — Move backward 1/2 screen
CTRL+b — Move backward one full screen
CTRL+e — Moves screen up one line
CTRL+y — Moves screen down one line
CTRL+u — Moves screen up 1/2 page
CTRL+d — Moves screen down 1/2 page
CTRL+b — Moves screen up one page
CTRL+f — Moves screen down one page
CTRL+I — Redraws screen
Copy and Paste Commands
We can copy and paste lines or words from one place to another place.
yy — Copies the current line
yw — Copies the current word from the character the lowercase w cursor is on until the end of the word
p — Puts the copied text after the cursor
P — Puts the yanked text before the cursor
Moving within a file
These are the default keys for moving in the command mode. Also we can use the arrow keys on the keyboard.
K — Move cursor up
j — Move cursor down
h — Move cursor left
l — Move cursor right
Saving and Closing the file
To exit from the editor in the command mode we should save the changes to the files.
Shift+zz — Save the file and quit
:w — Save the file but keep it open
:q — Quit without saving
:wq — Save the file and quit
Advanced Commands
There are some advanced commands that simplify day-to-day editing and allow for more efficient use of vi.
J — Join the current line with the next one. A count joins that many lines.
<< — Shifts the current line to the left by one shift width.
>> — Shifts the current line to the right by one shift width.
~ — Switch the case of the character under the cursor.
^G — Press CNTRL and G keys at the same time to show the current filename and the status.
U — Restore the current line to the state it was in before the cursor entered the line.
u — Undo the last change to the file. Typing ‘u’ again will re-do the change.
:f — Displays current position in the file in % and file name, total number of file.
:e # — Use to toggle between two opened files.
:n — In case you open multiple files using vi, use :n to go to next file in the series.
:p — In case you open multiple files using vi, use :p to go to previous file in the series.
:N — In case you open multiple files using vi, use :N to go to previous file in the series.
:r file — Reads file and inserts it after current line.
:nr file — Reads file and inserts it after line n.
:f filename — Renames current file to filename.
:w filename — Write to file filename.
:e filename — Opens another file with filename.
:cd dirname — Changes current working directory to dirname.
If you need any further assistance please reach our support department.
Related guides
How to Restrict an SSH Key to One Command
Restrict an SSH key to one command with authorized_keys options. Protect the command and check that unwanted shell and forwarding access are denied.
Linux and CommandsSelf-Hosted Video Processing With FFmpeg: A Practical Guide
Learn how to self-host video processing on a VPS using FFmpeg, with practical commands for conversion, compression, thumbnails, and automated workflows.
Linux and CommandsHow to use nohup: Commands in Linux That Survive Terminal Closes
Keep commands running after you close the terminal. nohup examples with wget, Python, rsync, and Docker on any VPS.
Linux and CommandsHow to Fix “Too Many Open Files” Error on Linux Servers
Learn how to fix the "Too Many Open Files" error on Linux servers by understanding file descriptors, adjusting limits, and diagnosing leaks effectively.
