[lug] vi/vim HOWTO (it's kinda long!)
John Starkey
jstarkey at polaris.umuc.edu
Wed Mar 29 23:02:33 MST 2000
I don't know if whoever the original poster was found this. But I was late for work when I
read the message requesting it.
Here's the copy I have. (Thanks PC Drew, btw).
PC Drew wrote:
> Before I go into more detail about vi, I'd like to make a few points
> about editors:
>
> * If you're setting up a machine that will be used by multiple
> people, _always_ install both emacs and vim (you can install
> xemacs, vim, pico, joe, jed, etc. if you're really nice). At
> the very least, however, make sure that both vi and emacs are
> on the machine.
>
> * I'm sure emacs is a very good editor, but I've never used it.
>
> * From this point forward, I will refer to both emacs and xemacs
> as "emacs" and both vi and vim as "vi" unless specifically stated.
>
> * Now, having said those things, there is a _war_ going on
> about which editor (primarily vi or emacs) is better. It is my
> belief that which editor you use has a lot to do with your
> personality type.
>
> * There are a _ton_ of commands for most editors, vi included.
> The commands listed here are just the tip of the iceberg.
>
> * Some of the following will be fact (command x does this), and others
> will be my own little tidbits. If you don't like what I've said,
> stop reading. That's my disclaimer.
>
> Okay, 'nuff said about that. I'm going to break this up into two sections.
> Section 1 will include commands that I think _everyone_ should know. Section
> 2 will include more indepth commands for those who are interested in actually
> using vi for all of their text editing needs.
>
> ** Section 1 **
>
> * History *
> Vi started out as the line editor called "ex". Ex/vi was developed
> at UC Berkeley by Bill Joy for an early BSD release. It is currently
> included in every UNIX distribution.
>
> http://www.techfak.uni-bielefeld.de/~joern/jargon/vi.HTML
>
> * Why learn even a little bit about vi? *
> Well, it's not a bad idea to learn basic editing commands considering
> it's installed on _every_ UNIX distribution. Even if you're an emacs person,
> it's good to know how to get around in vi in case you come to a box (i.e.
> Solaris) that doesn't have emacs installed as a default.
>
> * Fundamentals *
> Vi was written in such a way that for the majority of commands,
> you don't have to move you fingers off of the keyboard.
>
> To learn vi you must understand the following: there are three modes
> in vi.
>
> 1. Command Mode -> normal and initial state, other modes return to this
> state.
> 2. Input Mode -> once in this mode, you can type freely.
> 3. Line Mode -> waiting for input after certain commands.
>
> You'll mostly use the command and input modes. Now on to the nitty gritty.
> When you open a file using vi (i.e. "vi file.c"), you will start out in command
> mode. To start typing, you have to type any one of the following keys:
>
> i -> insert -- allows you to start typing where the cursor is currently.
> When you first open the file, the cursor will be in the upper left
> most corner.
> a -> append -- instead of typing where the cursor is currently, it moves
> over one character then allows you to start typing. This is _very_
> useful when you want to add more characters to the end of a line.
> o -> open -- insert a new line, then go into insert mode.
>
> After typing the things you need to type, you'll want to save the file (or not
> save the file). In order to do that, you need to be in command mode. To get
> out of input mode and in to command mode, all you have to do is hit the escape
> (ESC) key.
>
> The following key combinations will help you get out of vi (and do some other
> stuff). When you see a ":", that actually means type a colon. Typing a ":"
> puts you into line mode. When you press the "enter" key and after whatever
> you told it to do, it will revert back to command mode (unless you quit the
> application).
>
> :w -> write -- saves the file.
> :wq -> write then quit -- saves the file the quits vi.
> :q -> quit -- quit vi without saving the file.
> :w! -> force a write -- if you're the owner a file, but only have read
> permission on the file, this will bypass that and actually save
> the file.
> :wq! -> force a write then quit -- same as above, then quits vi.
> :q! -> force a quit -- quit without saving the file. If you just type ":q",
> and you've made changes, you'll get an error saying that you've
> changed the file and you must either write it or use ":q!".
> :e! -> re-edit the file -- dump any changes since the last save and re-edit
> the current file.
>
> Next, moving the cursor around in a file. All of these commands are to be
> entered in command mode. Vi newbies beware - you can use the h, j, k, and l
> keys to move around, but it takes a little getting used to!
>
> (arrow keys) -> move you around in the direction that they point.
> h -> left -- move the cursor left (like left arrow).
> j -> down -- move the cursor down (like down arrow).
> k -> up -- move the cursor up (like up arrow).
> l -> right -- move the cursor right (like right arrow).
> (number)G -> goto -- that's right, a number followed directly by
> the letter "G". That takes you to the specified line
> number. If you just type "G", you'll go to the end of
> the file. To go to the beginning of the file, type "1G".
> 0 -> beginning of line -- takes you to the beginning of the current line.
> $ -> end of line -- takes you to the end of the current line.
>
> Cut, Copy, and Paste. These commands are really powerful! When in command mode,
> you type any of the following key combinations.
>
> yy -> copy (yank) -- copies the current line.
> y(number)y -> Copy (yank) -- copies the (number) lines.
> dd -> cut (delete) -- cuts the current line.
> d(number)d -> Cut (delete) -- cuts the (number) lines.
> dw -> delete word -- cuts the word pointed to by the cursor.
> x -> delete character -- deletes the character pointed to by the cursor.
> D -> delete to the end of line -- cuts everything from the cursor to the end
> of the line.
> p -> paste (or put) -- pastes what is in the "clipboard". When used after
> a yy or a dd, it inserts the copied lines after the line where the cursor
> is. When used with "dw" or "D", it pastes the characters starting where the
> cursor is pointing.
>
> Here are a list of other commands that should be executed in command mode.
>
> . -> repeate last command -- it repeats whatever you just did. If you
> typed "dd" to delete 1 line, it will execute another "dd".
> u -> undo -- does just that, undoes your _last_ command. I'm almost positive
> that this is a bug in the original vi, but it is fixed in most vi clones
> (i.e. vim). In vim, you can undo multiple commands.
>
> ** Section 2 **
>
> This will appear (magically!) in another email because I have to attend
> class now. T'll then, have fun playing around with vi.
>
> --
> PC Drew
>
> "To understand recursion, we must first understand recursion."
>
> _______________________________________________
> Web Page: http://lug.boulder.co.us
> Mailing List: http://lists.lug.boulder.co.us/mailman/listinfo/lug
More information about the LUG
mailing list