+1 for @Heptite's answer.
For more completeness, here is what I have in my .vimrc:
" push current line up or down
nnoremap <leader><Up> ddkP
nnoremap <leader><Down> ddp
" exchange character under cursor with the next character without moving the cursor
nnoremap gc xph
" exchange word under cursor with the next word without moving the cursor
nnoremap gw "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o><C-l>
" push word under cursor to the left
nnoremap <leader><Left> "_yiw?\w\+\_W\+\%#<CR>:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o><C-l>
" push word under cursor to the right
nnoremap <leader><Right> "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o>/\w\+\_W\+<CR><C-l>
Source: the vim wiki.
I see my (and the wiki's) gw is slightly different from Heptite's one. I'm not sure which one is better.