* You have a function call: `|foo("blah", blah)` and want `bar()`. You type `c%bar()`. The `c` command means 'replace' while `%` searches forward for a matching character and jumps to the closing.
* You realize (after the fact) that you have a few more calls to foo. You type `/\<foo` and enter to jump to the next word in the file starting with foo and hit `.` to repeat the last edit. Then `n` to search for the next match and `.` again to repeat, etc. Since the vim command syntax is really expressive, repeat becomes a very powerful tool if you're doing it right.
* You have `my_dict['ab|cd']` and want `my_dict['efg']`. You type `ci'efg`. That's replace (c) inner (i) single-quoted string (') with efg. If you then wanted to change the single quotes to double quotes and had the surround.vim plugin, you type `cs'"`, which is replace (c) surrounding (s) single-quotes (') with double-quotes (").
* You have `fooTransformer(blah)` and want `barTransformer(blah)`, you type `ctTbar`, which is replace (c) 'till character (t) T with bar.
I've been deliberately using the replace command for these examples, but what makes the vim command syntax neat is that the command and the motion parts are orthogonal. So you could replace the `c` in any of the above examples with `d` to delete or with `y` to copy (yank) or with g% to rot13 or whatever.
It may seem like relatively small gains, but the most important thing is that I stay in the flow of the code. If I think "replace call" I type `c%`, which is only slightly slower and far faster than trying to ctrl+shift+arrow my way through the codebase.
The downside of Vim is that the learning curve is very, very long and is initially steep. Unless you're coding for a couple hours a day, it's honestly not worth it.
One tip that everybody eventually learns but is almost never metioned in beginner tutorials: Whenever you stop typing, go back to normal mode (use ctrl-[ or remap insert mode ctrl-j to Esc for more efficiency). This will eventually become automatic and will help you to avoid mode errors where you think you're in normal mode but you're actually in insert/replace mode.
Here's my favorite: http://rayninfo.co.uk/vimtips.html
It took me a while to get to this point, but I feel the investment was worth it. Just take a week and force yourself to use nothing but vim (and try learning as many features as you can) and see if it jives with how you think. If it doesn't, try emacs.
edit: Best way to see the power of vim is to watch someone edit text who's proficient with it; some people are so good with it you'd be convinced they mmap()'ed the file to their head and are just interacting with it in real time.
Just a week or so ago, I decided to try to see if I could switch over to vi for all my editing needs. I know people who really know vi are wicked fast at doing stuff in it, none of the additional functionality in emacs is really something that I'm using, and none of the GUI-based editors I've used have really done anything to convince me they're worth the extra hassle. Plus, I know it's available on all platforms I could conceivably need that sort of text editing, so I know my skills will be usable wherever the file might be.
Vim will increase your productivity by allowing you to manipulate large or small pieces of text at will, in ways you've probably not thought of, while your hands rarely leave their position of hovering over the home row. The arrow keys work, but you'll rarely use them. You'll be fast, not from fast typing but from less typing.
Once you've become reasonably proficient with vim, the difference between arrow key-based editors and vim begins to feel like the difference between chisels on stone and telekinesis.
It's easy to become minimally proficient. After you've installed gvim, run it and run these two commands:
[ESC]:help
[ESC]:help tutor
You should know about the first command, but the second is more important for you right now. It shows you how to start the interactive vim tutorial on your system, which will teach you just enough to use vim better than you can use Notepad++. Follow the tutorial, it won't take long and you don't have to do it all at once.
Now use vim whenever you edit a text file. You'll be a little slower than Notepad at first (but not much). You'll quickly gain speed.
The vim screencasts mentioned elsewhere in the comments are good for people learning vim, but I don't think they're a great advertisement for vim. The best thing for you is to run the tutorial.
Note: everything said here goes for emacs as well. It's a personal choice, and most people are either a vim person or an emacs person. I've never liked the chord-like commands of emacs, but emacs has more integration with the world outside of text editing and compiling than vim. Whichever type of person you turn out to be, you should be using one of these instead of Notepad.
Note note: I like vim so much that I've installed a firefox addon that lets me quickly edit web page text fields (like this one) with vim. https://addons.mozilla.org/en-US/firefox/addon/4125
vimtutor will answer a lot of your questions.
The kernel of the matter is the ability to do everything from the keyboard. You never have to use the mouse. That allows things to be much faster. That is a gross oversimplification, but I hope it helps.
1. Commands to move around the screen and file under edit: with at most 2 keystrokes you can (a) move to next word (b) move to previous word (c) move to start of line (d) move to end of line (e) move to start of file (f) move to end of file (g) move 1 character in any direction (h) move to the end of next word (i) move to end of previous word (j) move to the next word like the one under the cursor (k) move to the previous word like the one under the cursor. Other commands exist to make moving around really efficient: you rarely take your hands off the keyboard to do mousing.
2. Use of regular expressions for searching for text, and as a way of distinguishing edits. You can do things like change all tabs to 4 spaces with a single command, or change the tabs at the beginning of the line to 4 spaces. This is an astoundingly powerful idea, rarely exploited however.
3. Vim, improving on vi, has the "visual" modes, where you can use movement keys (see item 1) to choose a hunk of a file, then apply edits or change commands to that block.
4. Vim isn't really modal like all the propaganda has you believe. Sure, 'i' or 'a' or 'I' or 'O' will put you in what you can naively interpret as "literal typing mode". But you should really think of those as commands, followed by text, as you can do 5Ax<esc> and append 5 'x' characters to the end of the line. If you think about what most people call "modes" correctly, you can pull off a lot of interesting and fast edits.
5. It's fast and has very few built-in limits (line length, file size, window size etc etc).
Peeepcode has a "Meet Emacs" screencast available for about $9 as well here: https://peepcode.com/products/meet-emacs
It's not quite the site you describe, but I've learned quite a bit watching Vimcasts.
Also, PeepCode released "Smash Into VIM" yesterday: http://peepcode.com/products/smash-into-vim-i
1) The power of the editor. Lot's of great resources to learn more about it on the web or in vim itself. I learn something almost every time I read an article about it or watch a screencast. The learning curve is steep at the beginning, but totally worth it. I bookmark a lot of them on delicious:
http://delicious.com/claytron/vim
2) Portability. I use the same configs on FreeBSD, Arch Linux, Debian, Windows and OS X. I'm not tethered to an OS anymore for my fancy editor anymore (read TextMate). Not only is it portable, but it works mostly the same from the command line as it does in the GUI version. Having a full fledged editor on a remote machine is priceless :)
I made the switch about 6 months ago after switching to Linux for my dev environment. The only other editor I would consider using is emacs, for the same reasons.
3) The crazy world of vim. It's not just for writing code, I use vim everywhere possible now. Command line is bound to vi bindings, Vimperator in Firefox, It's all text to edit the web and external editor in Thunderbird to write emails. In fact, I'm writing this in vim right now :)
Now on all my systems that are mostly Linux (Ubuntu) and Windows I use Vim (vim & GVim).
I like to have powerful editor in all situations on all machines that I work and vim is that first.
The greatest feature is that hands are on keyboard all the time and as You learn the vim features You get amazed all the time and get more productive in every iteration.
The learning curve is easy and the most surprising at first is switching vim modes. That is adopted very fast and all that follows is fun and enjoinment.
Naturally all depends on Your affinity and if You spend lot of time in text editor dealing with different formats of text (HTML, xml, CSS, js, C#, Ruby, Php, C++, java, ...) You should invest some time learn to have real power on Your fingertips.
+ it's simple UI (all text-based)
+ it's lightweight
+ it is modal (which can be easier if you're a touch typist)
+ you never have to use the mouse (just like what lukeqsee said)
+ lots of plugins exist to enhance the functionality
Hope this helps!
+ it will help you prevent mistypings during other actions (thanks to insert mode) and sometimes I think it even helps to write better code.
I started last week and am trying to learn everything i can.