How do you tab a block of code, to the right to the left, up and down?
The page "Indenting source code" should give you all the information you need.
My favorite way is to select your block of code (with [V]isual line mode normally), then press > or <.
If you want to tab more than once, 2> or 3> to repeat it.
If you didn't tab enough (or tabbed too much) then type "gv" to reselect your selection and try again.
To move a block of code, select it with [V]isual line mode and then press "d". This is the "Cut" operation.
Then move your cursor to the place you want it to go, and press "p". This is the "Paste" operation.
You can also try auto-tabbing a block of code by selecting it with [V]isual line mode, and pressing "=".
In command mode:
>
As any other command you could prepend the number of line you want to have it applied:
2+2+>
Will "tab" 22 lines.
Press . if you want to "re-tab"
To indent the internal block containing the cursor, do: >iB
To indent the internal block including the enclosing braces, do: >aB
You can replace '>' with '<' to indent left.
To auto-indent press == (or = if you have highlighted text).
I use a handy remap for visual mode that allows indenting the text multiple times while keeping your text selected. Similar to how some IDEs lets you select and hit tab (or shift-tab) to indent.
Add the following to your .vimrc
" Pressing < or > will let you indent/unident selected lines
vnoremap < <gv
vnoremap > >gv
Also you can use == to have vim try and determine the correct indenting automatically. It will work on any line buy just placing the cursor there and pressing == or you can do fancy stuff like select the entire file and press == to fix all the indenting (works wonders on html generated by wysiwyg editors).