Vim Editor Basics

This tutorial is going to speak about vim basic use and covers also the editor vi. Vim is a powerful text editor used in CLI (command line interface). Linux uses a lot of configuration files, you'll often need to edit them and vim is a great tool to do so. Alternatives to vim are the command-line editor's nano and joe.

To start vim editor, run the command:

vim

The vim edit will show up in the terminal window.

Vim Editor

Vim has a particular working method, there are two main modes: the command mode and the other modes.

The command mode lets you select the working mode that you want to enter. Available modes are: save, quit, copy, paste, and that kind of things but you can't edit the file in the command mode directly. This is what many users are new to vim puzzles and one has to get used to first.

Vim modes

There are several other modes, I'll cover only the most widely used ones here. At the end of the tutorial, you will find some links to in-depth guides about VIM and explanations of advanced modes.

Insert Mode

The Insert mode lets you insert text in a document. The shortcut is: "i" (insert text where the cursor is) or "o" (insert text at the beginning of the following line).

Visual Mode

The visual mode permits the user to select the text as you would do with a mouse but using the keyboard instead of the mouse. Useful to copy several lines f text for example. The shortcut is: "V".

Command Mode

Let's now speak about the command mode, a command begins with the symbol ":".

When you are in another mod you can use the escape key (sometimes you'll need to hit it twice) to come back to command mod at any time.

For a more in-depth explanation of the Vim modes, take a look at the tutorial: Vim Editor Modes Explained

Vim usage example

To start using vim, just run the "vim" command on the Linux shell followed by the path of the file that you want to edit.

Example, editing of the file /etc/hosts

vim /etc/hosts

The result will look like this:

Editing a file with Vim

The editor is now in command mode. To start editing the file content, enter:

:i[enter]

[enter] means to press the return or enter key on your keyboard.

The word --insert-- will appear at the bottom of the editor window to show that you are in insert mode now.

Vim in insert mode

Now you can edit the file by navigating to the line that you want to change with the cursor keys and then start typing the text. When you are finished with editing, press the [esc] key to go back to the command mode.

To save the file and exit the editor, enter:

:x[return]

In case you want to quit vim without saving the file, enter:

:q![return]

Vim Command Reference

save: :w
save and exit: :wq
exit: :q
force: ! (example :w! :q!)
vertical split: open a document and then type :vsplit /path-to-document/document and this will open the specified document and split the screen so you can see both documents.
copy: y
copy a line: yy
paste: p
cut: d
cut a line: dd

These are the very basic commands for vim, but they are useful as vim or vi is preinstalled on most Linux systems. I hope this will help you configuring your Linux.

Advanced Features

Here are some tutorials that cover the advanced features of Vim.

Share this page:

Suggested articles

11 Comment(s)

Add comment

Comments

By: nick

you can also use ':x' for save and exit. and 'x' to delete current character.

By: Adam

In your command prompt type vimtutor

Its the best vim tutorial to learn by doing.

-Adam

By: Angel

Excellent article for beginners like me, just want to add the following:

When you use the vsplit command and open two documents you can go between first and second file with Control+w+(rightarrow or leftarrow)

When you use the visual mod and you want to copy, cut or paste some text you can use the same commands from the command mod, you can also copy cut or paste text between files.

If you wish you can add this comments in the original post.

Thanks and sorry for the bad english.

By: Allenace

Quit save and exit with
shift+zz

By: Anonymous

This "tutorial" was not very helpful, mainly because it doesn't address one of the most non-intuitive and confusing aspects of vim: how to move the fricking cursor.

By: kswan

Actually, in vim the arrow keys work so that is very intuitive.  In vi the arrow keys normally don't work, but the vi navigation works in vim (j - Down, k - Up, h - Left, l - Right).

I thought this tutorial did cover the most important and unintuitive part of vim, namely how to exit.

The referral by another commenter to vimtutor is also beneficial.

By: Anonymous

Moving the cursor in vim is very easy (unlike in vi), simply use the arrow keys, whether in insert mode or not.

 The "Home" and "End" keys also work as expected (move to beginning and end of line).

The "Delete" key also works as expected (delete the caracter under the cursor).

 

One key I use also in non insert mode is the "a" key, it works like "i" to switch to insert mode, but inserts after current character, very useful for appending text at the end of a line.

By: Anonymous

Hi Hardly,

 >Using capital R will also allow you to backspace over text you have typed to reveal the original text. This will always impress onlookers. 

 

Could you please explain this a little bit more as I didn't catch it (maybe because not native English speaking)?

 Best regards, xcomm

By:

Another handy tool in vim that I use often is the Replace function. While in navigation mode press the r key and then the key you want to replace the selected character with. This will replace one character at a time.

Capital R will stay in replace mode allowing you to type extended lengths of text over other text. ESC to exit. Using capital R will also allow you to backspace over text you have typed to reveal the original text. This will always impress onlookers. 

Just now after typing this comment I actually began to type :wq. lol

By: ppap

what if you use linux?

By: Marek

Hello,

Please change ':i' => 'i' after the words 'The editor is now in command mode. To start editing the file content, enter:',

because :i doesn't work properly.