En Vim, si pego este script:
#!/bin/sh
VAR=1
while ((VAR < 10))
do
echo "VAR1 is now $VAR"
((VAR = VAR +2))
done
echo "finish"
Obtengo estos resultados extraños:
#!/bin/sh
#VAR=1
#while ((VAR < 10))
# do
# echo "VAR1 is now $VAR"
# ((VAR = VAR +2))
# done
# echo "finish"
#
Han aparecido signos hash (#) y pestañas. ¿Por qué?
vim
clipboard
whitespace
elbarna
fuente
fuente

Respuestas:
Hay dos razones:
Para pegar
vimmientras la sangría automática está habilitada, debe cambiar al modo pegar escribiendo:Luego puede cambiar al modo de inserción y pegar su código. Después de pegar, escriba:
para desactivar el modo pegar. Dado que esta es una acción común y frecuente,
vimofrece el modo de alternar pegar:Puede cambiar
F2a la tecla que desee, y ahora puede activar y desactivar el pegado fácilmente.Para desactivar la inserción automática de comentarios, puede agregar estas líneas a su vimrc :
vimtambién proporciona un registro de pegado para que pegue texto desde el portapapeles del sistema. Puede usar"*po"+pdependiendo de su sistema. En un sistema sin X11, como OSX o Windows, debe usar el*registro. En un sistema X11, como Linux, puede usar ambos.Otras lecturas
fuente
set pastenunca debería estar en tu vimrc. Deshabilita o restablece muchas cosas, incluidas las asignaciones de modo de inserción, las asignaciones de línea de comandos, las abreviaturas, el ancho de texto, el ajuste de margen, el autoindent, smartindent, softtabstop, formatoptions, indentexpr y un par de otros.:h pastetiene toda la lista La mayoría de las personas usan algunas o todas estas cosas y se preguntan por qué se ignoran las configuraciones.:r!catpara pegar textualmente.set mouse, que puede ingresar y salir automáticamente del modo pegar al pegar con el clic del mouse.Usa la pasta vim. Lo que quieres es pegar lo que está en el búfer del portapapeles "+p
Esto selecciona el
+y lo pega en su lugar.Si está utilizando Linux,
*es el búfer X / clic medio (el último texto seleccionado).Entonces vim sabe que es una pasta.
De lo contrario, vim cree que ha escrito las teclas que se están pegando y realiza su propia sangría automática (además de la sangría copiada) hasta el final del pegado.
Como nota para que esto funcione sobre SSH, debe configurar la opción para compartir su portapapeles
-YVer
man sshpara más detalles.fuente
gvim); vim ejecutándose en un emulador de terminal pega el último texto eliminado con "* p, no la selección actual.set mouse?vim --versionsi se compiló con soporte para portapapeles+xterm_clipboarddebe estar en la salidaunnamedcuerda.Las pestañas se insertaron porque tiene autoindent activado y puede deshabilitar ese comportamiento desactivando autoindent (
:set noai) antes de pegar en la terminal.Las líneas comentadas se producen mediante comentarios automáticos y se pueden deshabilitar al desactivarlas.
Alternativa a las que debería obtener el comportamiento deseado utilizando los botones
:set paste, pegar su código formateado y:set nopasterestaurar el comportamiento normal.fuente