Cuando copio algún código de páginas web y lo pego en VIM, encuentro que se convierte en un estilo desordenado como una escalera de la siguiente manera
xxxxxx
xxxxxx
xxxxxx
xxxxxxxxxx
Dado que se estropeaba tan regularmente, creo que tal vez hay algo mal con mi, .vimrc
que es el siguiente:
set number
set nocompatible
set nowritebackup
set noswapfile
syntax on
filetype indent on
filetype plugin on
filetype on
set background=light
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions=T
set fileencodings=utf-8,prc
set ruler
set incsearch
map gs :%s
set t_Co=256
:colorscheme evening
filetype plugin indent on
Por lo general, escribo Python en VIM y agradecería su ayuda.
vim
copy-paste
SpawnST
fuente
fuente
Respuestas:
Haz esto antes:
A continuación, después de:
fuente
gvim
; los activa y desactiva automáticamente al pegar.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):
Para pegar desde otra aplicación:
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:
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.
fuente
Es el autoindent que está jugando contigo.
Intente deshabilitarlos cuando corte y pegue su código, y luego habilítelos nuevamente cuando haya terminado.
fuente
La menor cantidad de esfuerzo para lograr esto es (se puede poner en
.vimrc
):Luego pegue su código.
fuente
'paste'
opción nunca fue creada de forma permanente. Inhabilita muchas cosas, incluidas las asignaciones y abreviaturas. Además, una respuesta previa ya cubre la'paste'
opción.