In many GUIs when I select a section of text and then hit the Tab or Shift+Tab button the selected section will indent in or out.
I
Or, you can go the nearest brace and type =%
in normal mode -- it indents the block covered by the brace and its matching one. But I'm not sure how this is useful in a language such as Python.
The following key map works like Brian's solution, But also keep the cursor position related to the word.
" tap indent movement (use mark `m' for cursor position)
vmap <S-Tab> mm<`m:<C-U>exec "normal ".&shiftwidth."h"<CR>mmgv`m
vmap <Tab> mm>`m:<C-U>exec "normal ".&shiftwidth."l"<CR>mmgv`m
Since I've abandoned vi to vim, I've never used > nor < again. I exploit vim automated indentation that can be explicitly triggered with =
It works very well to motions like =a{ which is even more efficient than =%
Otherwise, If one > isn't enough, just redo it with ., or undo the change with u.