Pete Freitag Pete Freitag

Vi Tips and Tricks

Updated on June 27, 2024
By Pete Freitag
linuxmisc

The unix text editor vi probably has more features than Microsoft Word yet I've only been using about 5 of them. Recently I've been learning a bit more about it. I now know some of the more handy features thanks to the VI reference in forth edition of Unix in a Nutshell (ISBN 0596100299) which was just released in October.

The reason I think vi is an important editor to learn is that it is typically installed on any unix system (including Mac OSX) by default. Other unix text editors such as emacs aren't installed by default as often.

Basic VI features (beginners only)

Using vi is pretty easy if you know a few things about it, if you don't you probably won't even be able to edit or save a file. Lets start by editing a file /tmp/somefile

vi /tmp/somefile

Vi starts up in command mode, you can give VI commands to run such as delete this line, search for this, etc.

To start we want to give the insert command so hit i, you should see -- INSERT -- at the bottom of the screen. Go ahead and write a haiku or something.

Now to save it you need to go back into command mode this is done by hitting ESC now type wq (this means write and quit).

Ok that's the basics you can get pretty far just knowing that.

Handy Features in VI

Here's a list of some of the commands that I have found to be quite handy:

  • Search :/pattern - search for pattern in the file. This can be a regular expression. Hit n to go to the next match.
  • Find and Replace :s/find/replace/g
  • Go to End of Line $
  • Beginning of Line ^
  • Last line in the file L
  • Middle of the file M
  • Top of the file (Home) - H
  • Go to line 10 :10
  • Delete current line dd
  • Copy or yank a line Y - you can use 5Y to copy 5 lines. Also try yG, and y$.
  • Paste p
  • Undo u
  • Redo Ctrl+R

Have any other handy vi tips? post them in the comments.



unix vi nutshell reference tips tricks

Vi Tips and Tricks was first published on December 01, 2005.

If you like reading about unix, vi, nutshell, reference, tips, or tricks then you might also like:

Weekly Security Advisories Email

Advisory Week is a new weekly email containing security advisories published by major software vendors (Adobe, Apple, Microsoft, etc).

Comments

Thanks steve, that one is really handy for programming.
by Pete Freitag on 12/01/2005 at 1:33:48 PM UTC
My favorite vi tip is: "pico".

J/K: I'd love to use vi full time it just always seemed like a pain in the ass.
by Scott Fitchet on 12/01/2005 at 2:50:55 PM UTC
Yeah nano, is another easy to use editor for unix. vi does have a lot of power though.
by Pete Freitag on 12/01/2005 at 4:09:18 PM UTC
John - thanks for sharing your knowledge. I'll update the post to reflect that when I get a chance.
by Pete Freitag on 12/03/2005 at 6:29:41 PM UTC
I am new to vi, actually just got ubuntu installed on an external hd yesterday. In my run-ins so far with it, it seems very very similar to vim from the command line. Are they the same thing?
by Ryan Guill on 12/04/2005 at 11:33:02 AM UTC
Other basic trick:

dw -> delete word.

joe( Joe's Own Editor) fan here.
by Darkglam on 12/19/2005 at 6:55:04 AM UTC
I've been getting "back to my roots" editing PHP code with GVIM at home, but I was tossing around the idea of using it at work with my ColdFusion code... Do you know of any VIM modefiles for ColdFusion?
by Adam Ness on 01/05/2007 at 3:09:34 PM UTC
A really handy feature is the '.' key (a period). It repeats the last edit, either new text or a delete. For instance, use 'dw' to delete a word, then '.' will continue to delete the next word each time it is pressed. If you want to change all occurances of some word, search for it, make the change, and then use 'n' to find the next occurance. Repeated use of 'n.' will find and replace.

One step further is to map another key to a sequence of keys. Use ":map z n." to make a press of the z key do the same as "n.". Now you can hold the z key down and FLY through your file. This is especially handy for lists.
by PikesPeakCNC on 10/06/2007 at 8:47:54 AM UTC