Be sure you take the Vim tutorial. You can use "vimtutor" from the shell command line.
When you're taking the tutorial, learn how to use "hjkl" instead of the arrow keys. Not having to use the mouse or the arrow keys and rarely needing to use the control key is one of the great benefits of being a Vim power user.
It's best to get Vim out of compatibility mode. You can do this by creating a .vimrc file (even an empty one) in your $HOME directory.
Next, I personally prefer to use gvim. Using the gvim command starts Vim in GUI mode. I like the GUI menus, etc. Of course, you'll need a version of Vim with GUI support. There are GUI versions of Vim for Windows, Linux, Mac, etc.
Next, if you can get Vim 7, do that. It has nice, native tabs and a bunch of other useful features.
In response to a reader's question, I think the auto folding comes builtin. I've never used it, so I can't say more. I have seen it though.
There's a Vim cheat sheet.
Here's a list of my favorite Vim commands copied from my notes:
Format something: <highlight>gq<or motion>I have a pretty simple, self-explanatory .vimrc file. About the only thing complex is that I specify how to indent various programming languages based on my psychotic understanding of the various style guides for those languages. To learn more about any of these settings, use "help somesetting" withing Vim:
Set a map:
:map <key> <several keystrokes>
Don't be afraid to use C-V to type special characters.
Visual mode (so you can visually highlight text):
v: highlight by characters
V: highlight by lines
C-v: highlight vertical blocks
cmd may be either "<" or ">"
You often follow this up with one or more .'s
Named buffers: "<letter><some cut or paste like command>
Create: q<letter><go about your business>q
If you're on a search and replace mission, end your macro with a search for
the next thing you need to search for. Otherwise, your "search next"
will probably have been blown away during the macro.
@@ will repeat the last macro you executed.
Where was I?
^o: go backwards
^i: go fowards
This will even change your file!
m<letter>: Set a marker named <letter>
'<letter>: Jump back to that marker
"q:": Enter into cmdline mode.
^f: Enter into cmdline mode in the middle of typing a command.
^x^o: autocomplete code
" These are general settings.You can download plugins for Vim from the Vim Web site. The taglist plugin is a must have for using ctags. I use this to see all of the functions and classes in the Python module I'm currently editing. The minibufexpl plugin is useful if you're not using Vim 7. It shows all of your open buffers in fake tabs. Be sure to add "set hidden" to your .vimrc if you use it so that you don't have to save the current buffer before switching to another one.
set guifont=Monospace\ 9
" autoindent works better if you fix the backspace key.
" "T" toggles the taglist for ctags.
map T :TlistToggle
" These are settings for various file types.
au BufRead,BufNewFile *.c,*.h,*.cpp set ai sw=4
au BufRead,BufNewFile *.css set ai sw=4 sts=4 et
au BufRead,BufNewFile *.html set ai sw=2 sts=2 et
au BufRead,BufNewFile *.java set ai sw=4 sts=4 et
au BufRead,BufNewFile *.js set ai sw=4 sts=4 et
au BufRead,BufNewFile *.mhtml,*.mas set ai sw=2 sts=2 et ft=mason
au BufRead,BufNewFile *.ml,*.mll,*.mly set ai sw=2 sts=2 et
au BufRead,BufNewFile *.php,*.php3,*.php4 set ai sw=2 sts=2 et
au BufRead,BufNewFile *.pl,*.pm set ai sw=4 sts=4 et
au BufRead,BufNewFile *.py set ai sw=4 sts=4 et tw=72 " Doc strs
au BufRead,BufNewFile *.scm set ai sw=2 sts=2 et
au BufRead,BufNewFile *.sh set ai sw=4 sts=4
au BufRead,BufNewFile *.sql set ai et
au BufRead,BufNewFile *.tmpl set ai sw=2 sts=2 et
au BufRead,BufNewFile *.txt set ai sw=2 sts=2 et tw=79
Vim 7 has some neat features such as an improved ability to edit and manage files over scp. I'm just getting started with it, but "gvim scp://foxmarks.com/" is already useful.
Also, I should mention something about workflow. IDE users and Emacs users rarely have more than one copy of their editor running at any one time. Since startup in Vim is so fast, I must admit to opening up multiple gvim windows all the time. I might have 5 of them spread across my screen at the same time. However, it's now possible in Vim 7 to open up a document from the command line in a new tab within the currently running editor: "gvim --remote-tab file.txt".
Furthermore, I should state that I don't use Vim as an IDE replacement. If you want a full IDE for Python, I can recommend Wing IDE. I don't use an IDE. Rather, I use Vim as an important part of my "development environment". I'm still very shell oriented. I use the shell for all sorts of things such as file management, Subversion, grep, find, wc, etc. Recently, I switched to zsh, but that's a topic for another post ;)
To finish this post, as well as to give a flavor for how I use the shell and Vim together, I'll show you how I do global search and replace across my entire project. Start at the top of the project in your shell. Then do: "gvim $(grep -rl sometext .)". This will open up all the files of interest. Then, "/sometext". This will jump to the text you're looking for. Use the "c" command to change the text in one shot. Now, "n" to jump to the next instance and "." to change that instance too. At the end of the file ":wn" to write and jump to the next file. Following this "work idiom" you can make each change by hand, but still do so really fast: "n.n.n.n.:wnn.n.n.n:wn". To make more complicated edits, I follow the same pattern, but I use a macro to change the text.