I didn't really start to like Vim until I started playing around with my .vimrc file. There were too many minor irritants and things I wanted changed. An Ask HN on the subject came in very handy: http://news.ycombinator.com/item?id=856051
Mine (along with a few other minor customizations) is at http://github.com/samdk/vimconf/blob/master/dotvimrc if you'd like to take a look.
Some other good resources: http://dotfiles.org/.vimrc http://www.vi-improved.org/vimrc.php
This is how the book introduces itself:
"A Byte of Vim" is a book which aims to help you to learn how to use the Vim editor (version 7), even if all you know is how to use the computer keyboard.
The first part of this book is meant for new users who want to understand what Vim is and learn how to use it.
The second part of this book is for people who already know how to use Vim and want to learn about features that make Vim so powerful, such as windows and tabs, personal information management, making it a programmer's editor, how to extend Vim with your own plugins, and more.
A final note: I have been using vim for my main editor for years now, and still learn new stuff all the time. Playing with new scripts, finding new bits of workflow, and getting really fast at it all take time. This is natural. I try and pick a couple new things a week an use them. Sometimes I will then forget about them for weeks, months or years because I think they are useless, but "rediscover" them only to use them all the time. Its actually quite fun.
Following this I also made it a point to read at least a little vim documentation (:h) every day. Its very detailed and helpful.
There is also the Vim book[1] by Steve Oualline which is also available free as a PDF.
Reading Vim tips[2] was also something that I found useful.
Also, use vim for everything, not just code. Use it for email, writing projects, file management, and explore what else it can do for you.
Stay out of insert mode: http://cloudhead.io/2010/04/24/staying-the-hell-out-of-inser...
Good explanation of how vim commands are actually formulated (Stack Overflow answer): http://stackoverflow.com/questions/1218390/what-is-your-most...
Learn the basics first:
1. Basic movement (h l k j)
2. Insertion mode (i), deletion (x), selections/visual Mode (v), copying/yank (y), pasting/put (p), and exit insertion mode (esc)
Once you learn those the rest is pretty easy to pick up.
I should warn you though, once you get used to the key commands it's hard to go back to another editor.
They're relatively simple to remember and you can string them together to accomplish a lot more than the character-wise to word-wise motion progression I've seen in most vim intros.
The built in tutorial is a decent place to start. I think that's the only thing I did apart from editing code. It takes a while to get over the hump but it's worth it.
I also suggest remapping your CAPS LOCK key to ESC. PCKeyboard Hack is free and simple to set up for that purpose. I've never liked the role of ESC in vi. It's too far away from the home keys.
If you learn to love the efficiency, I'd suggest looking at Komodo Edit or another editor that has vim key mappings. I prefer Komodo because it's vim plus code completion (I'm not aware of a vim solution for that) and a bunch of other bits that will save time.
There are various plugins available to make it smarter for C++ and other languages (so it only searches in appropriate namespaces and the like).
You will notice a big drop in productivity at first, but hopefully you should notice yourself getting faster in a week or so.
See his blog page with links to his videos: http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-novice...
Or go to his Vimeo page where they all sit: http://vimeo.com/user1690209
http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial...
I also prepare this write up answering "Why vi?":
http://www.viemu.com/a-why-vi-vim.html
They've been on the HN front page a few times, too.
Also, fwiw, Macvim may help retain vim usage.
I'm curious: what's the motivation for learning it from scratch?
vim is just as likely to be on any linux/os x box today as vi was to be on any UNIX box when you were learning vi, and it's still very powerful today.
Also, working in 80x50 with only the editor open for a couple of months kind of gets you into the mode :)
Find ways to do as much as you can of what you normally do with your computer in emacs. If you use IRC a lot, use erc. If you use email a lot, try out gnus or rmail. Don't try to replace your web browser with w3m, that's just stupid and you'll hate it.
Also, find a mode you really like. This will keep you using emacs whether you like it or not, until you really do like it. For me, it was gdb-mode. For most, it's one of the inferior repl modes (slime for lisp or clojure or whatever, ruby, python).
I've heard good things about http://github.com/technomancy/emacs-starter-kit, but I've never tried it.
I do use IRC a lot, and I'll start using erc per your suggestion. One question, is there any way to get spell-checking on it? I'm hoping the solution is as straight-forward as x-chat's (this screenshot demonstrates it fairly well: http://i42.tinypic.com/rw2ljr.jpg though, I don't require fancy multi-language spell-checking, just an English spell-checker will do for me)
I wish I had a friend who used emacs! On that note -- anyone in this HN crowd who uses emacs from Milwaukee? I'm willing to gift copious amounts of chocolate (or whatever else you prefer) in exchange for even short periods of guidance. :)
[1] Here's mine: http://bitbucket.org/[redacted]/dotfiles/src/tip/.emacs :)
Steve Yegge wrote some great starter posts on Emacs. He essentially inspired me to get out and learn it. He provides some good starting defaults that you should use. You can Google for these.
If you start Emacs and type C-h t, you'll get the tutorial, which is a helpful starting point. C-h in general is your friend and an entree into several kinds of help, like what keystroke bindings are currently active, what a built-in function does, what a keystroke does, etc.
The Emacs Wiki is a great place to go and just click around for a while. On the front page is a section for the Emacs Newbie. The Nifty Tricks page alone could consume several weeks of learning.
http://www.emacswiki.org http://www.emacswiki.org/emacs/EmacsNewbie http://www.emacswiki.org/emacs/EmacsNiftyTricks
What really sold me on Emacs was M-x shell. I love having a terminal with functionally infinite history, with completions for any text I enter (not just files and programs, read about Hippie expand), where I can munge the output of a shell command in place or just search through it.
M-x shell in combination with server-mode essentially replaced screen for me. server-mode allows you to run Emacs as a long-running server process that you can attach to with emacsclient. So your Emacs process might have uptime measured in months, and you just keep attaching to it from home or at work.
I like ido-mode with fuzzy matching, which functions something like an awesome bar for your editing tabs (or "buffers" in Emacs lingo).
Eventually, you may plateau in your knowledge and you might want to read the manual. It is written in small, digestible bits. You can skip around but it might help to read the first chapters first. It took me about a year to get to the point where it made sense to start eating the elephant.
http://www.gnu.org/software/emacs/manual/emacs.html
Last, you might want to investigate Emacs Lisp programming. Writing little programs in the native language of your text editor will make you drunk with power.
Happy hacking!