A pesar de que la pregunta es bastante antigua y está marcada como respondida, me gustaría extender la respuesta diciendo que puede usar los comandos del modo normal, que fueron proporcionados por Sven Marnach con nnoremaplo siguiente:
:nnoremap <C-Up> <Up>ddp<Up>
:nnoremap <C-Down> ddp
Esto le permitirá mover líneas con Ctrl+ Upy Ctrl+ Downdentro de su archivo. Sin embargo, esto sobrescribirá el @"registro, que almacena la última cadena / palabra / letra / etc. copiada. Entonces, agregando "(reg) antes ddy pcomandos, podemos solucionar esto:
:nnoremap <C-Up> <Up>"add"ap<Up>
:nnoremap <C-Down> "add"ap
Aquí agregamos "acomandos antes de eliminar y pegar para almacenar nuestra línea en el @aregistro, por lo que su registro de copia predeterminado no se sobrescribirá. Sin embargo, puede sobrescribir el contenido del @aregistro (quién sabe, pero puede usarlo para algo importante en su caso de uso, pero este paso es un poco paranoico, puede omitirlo si lo desea), solucionemos eso también:
: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>necesario para evitar hacer eco de nuestros comandos en la línea de mensajes en la parte inferior).
Ahora tenemos dos mapeos que nos permiten mover líneas dentro del archivo con atajos de teclado. Puede redefinir los botones, yo uso Alt+ j/ k, que sería <A-j>y <A-k>para esos comandos. Sin embargo, no todos los emuladores de terminal admiten asignaciones de teclas Alt AFAIK.
git config --global core.editor <whatever>, o para muchas cosas a la vez (incluido git) al incluirexport EDITOR=<whatever>en su archivo.bashrc.