Aqui está uma versão simplificada, para MacVim, usando os exemplos de artigos da Wikia (veja o link do comentário de gun ).
" Move selection up/down (add =gv to reindent after move)
:vmap <D-S-Up> :m-2<CR>gv
:vmap <D-S-Down> :m'>+<CR>gv
Estou usando apenas a variante de seleção de bloco, porque basta Shift-V para selecionar a linha atual e, opcionalmente, cursor para cima / baixo para selecionar mais algumas linhas.
De acordo com os atalhos acima, pressionar Cmd-Shift-Up / Down alternará a seleção de bloco para cima / baixo. "D" é a tecla Command no MacVim; para Windows, tente "C" (Controle) ou "A" (Alt) (por exemplo, <CAf> seria Control Alt f).
O artigo da Wikia adiciona "= gv" a eles, que tem o efeito de ajustar o recuo do bloco após a movimentação, com base no texto ao redor. Isso é confuso, então eu o removi e adicionei atalhos para recuar rapidamente a seleção.
" Indent selection left/right (Cmd Shift Left/Right is used for Tab switching)
:vmap <D-A-Left> <gv
:vmap <D-A-Right> >gv
Lembre-se, o mesmo pode ser feito com << e >>, mas a seleção seria perdida; portanto, esses atalhos acima permitem recuar várias vezes e ainda mover o bloco porque a seleção é mantida.
Meu MacVim está configurado para alternar as guias com Cmd-Shift-Esquerda / Direita, então usei Cmd-Alt-Esquerda / Direita.
Aqui está a alternância de guias para o MacVim (insira .gvimrc com o restante acima):
:macm Window.Select\ Previous\ Tab key=<D-S-Left>
:macm Window.Select\ Next\ Tab key=<D-S-Right>