http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Alternar la sangría automática para pegar código
Fondo
Si usa los comandos de Vim para pegar texto, no ocurre nada inesperado. El problema solo surge al pegar desde otra aplicación, y solo cuando no está utilizando una versión GUI de Vim. En una versión de consola o terminal de Vim, no existe un procedimiento estándar para pegar texto desde otra aplicación. En cambio, el terminal puede emular el pegado insertando texto en el búfer del teclado, por lo que Vim cree que el texto ha sido escrito por el usuario. Después de que finalice cada línea, Vim puede mover el cursor para que la siguiente línea comience con la misma sangría que la anterior. Sin embargo, eso cambiará la sangría ya en el texto pegado.
Pegar alternar
Ponga lo siguiente en su vimrc (cambie a la clave que desee):
set pastetoggle=<F2>
Para pegar desde otra aplicación:
- Comience el modo de inserción.
- Presione F2 (activa la opción 'pegar').
- Use su terminal para pegar texto desde el portapapeles.
- Presione F2 (desactiva la opción 'pegar').
Luego se conservará la sangría existente del texto pegado.
No es necesario que inicie el modo de inserción primero, pero si está en modo normal y tiene una asignación para F2, esa asignación se aplicará y la función 'pastetoggle' no funcionará.
A algunas personas les gusta la retroalimentación visual que se muestra en la línea de estado con la siguiente alternativa para su vimrc:
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
La primera línea establece una asignación para que presionar F2 en modo normal invierta la opción 'pegar' y luego muestre el valor de esa opción. La segunda línea le permite presionar F2 cuando está en modo de inserción, para activar y desactivar 'pegar'. La tercera línea permite mostrar si 'pegar' está activado en modo de inserción.