set paste
Desde hace mucho utilizo Vim como editor de texto, me falta mucho para ser un gran gurú pero me defiendo con el. Sin embargo desde hace un tiempo hay una cosa en Vim que me resultaba molesta, lo había comentado con algunos amigos y en una primera busqueda rápida no había encontrado la solución así que lo he ido dejando pasar hasta hoy.
El problema del copy paste y la
indentación que se va a tomar por donde amargan los pepinos. Es un problema bastante frecuente, seleccionamos un texto con
indentaciones de cualquier sitio y al copiarlo en vim obtenemos una cosa con indentaciones y bastantes cosas horribles.
En este ejemplo tenemos seleccionado el texto que queremos copiar.
Y en esta otra imagen
podemos ver como lo pega, moviendo todos los bloques de código. Asi que hoy me he decidido y he
encontrado la solución. Usando la directiva paste podemos alterar este maldito comportamiento, pero no
podemos dejarlo fijo ya que perderíamos todas las caracteristicas de autoindentando así que una vez que hemos terminado
de copiar volvemos a nuestro sistema tradicional con la directiva nopaste.
:set paste :set nopaste
Por fin, pero para acabar de solucionar el problema recurriremos a un mapeo de teclas que nos introduzca los comandos de forma automática. Si pulsamos F10 podemos pegar sin problemas y pulsando F11 volvemos al modo de edición normal, lo único que tenemos que hacer es añadir este código a nuestro fichero vimrc (/etc/vim/vimrc en debian si queremos hacerlo global)
map <F10> :set paste<CR> map <F11> :set nopaste<CR> imap <F10> <C-O>:set paste<CR> imap <F11> <nop> set pastetoggle=<F11>