Apesar de a pergunta ser bastante antiga e marcada como respondida, gostaria de estender a resposta dizendo que você pode usar os comandos do modo normal, que foram fornecidos por Sven Marnach com nnoremap:
:nnoremap <C-Up> <Up>ddp<Up>
:nnoremap <C-Down> ddp
Isso permitirá que você mova as linhas com Ctrl+ Upe Ctrl+ Downdentro do arquivo. No entanto, isso irá sobrescrever o @"registro, que armazena sua última string / palavra / letra / etc copiada. Então, adicionando "(reg) antes dde pcomandos, podemos corrigir isso:
:nnoremap <C-Up> <Up>"add"ap<Up>
:nnoremap <C-Down> "add"ap
Aqui, adicionamos "acomandos antes de excluir e colar para armazenar nossa linha no @aregistro, para que o registro de cópia padrão não seja sobrescrito. No entanto, ele pode sobrescrever o conteúdo do @aregistro (quem sabe, mas você pode usá-lo para algo importante no seu caso de uso, mas esta etapa um pouco paranóica, você pode pular se quiser), vamos consertar isso também:
:nnoremap <silent><C-Up> :let save_a=@a<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>
:nnoremap <silent><C-Down> :let save_a=@a<Cr>"add"ap:let @a=save_a<Cr>
( <silent>necessário para evitar o eco de nossos comandos na linha de mensagens na parte inferior.)
Agora temos dois mapeamentos que nos permitem mover linhas dentro do arquivo com atalhos de teclado. Você pode redefinir botões, eu uso Alt+ j/ k, que seria <A-j>e <A-k>para esses comandos. No entanto, nem todos os emuladores de terminal suportam mapeamentos de teclas Alt AFAIK.
git config --global core.editor <whatever>ou para muitas coisas de uma vez (incluindo git) incluindoexport EDITOR=<whatever>em seu.bashrc.