mitago.net

Página web de Celso González

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.

Texto a copiar 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.

Texto pegado 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>

mar 27 febrero 2007 11:430 comentarios