Pregunta:
Cómo pego ahora:
- Haga clic derecho / Copiar o simplemente resalte.
- Clic derecho / Pegar o Clic central o CTRL + MAYÚS + V
- Las sangrías aparecen a intervalos crecientes: 0, 2, 4, 6, +
Pregunta en la mano:
De una investigación anterior, descubrí que la solución rápida y sucia es ingresar lo siguiente en mi archivo .vimrc
: set paste
. Sin embargo, aquellos que sugirieron ese comando dijeron que el set paste
afecta a otras configuraciones. (Fuera de mi cabeza, lo olvido).
Me gustaría saber qué opción puedo establecer que simplemente se pegue sin sangría adicional. Si eso termina siendo 'paste'
, entonces me gustaría saber qué hace exactamente ese comando.
Solo veo una diferencia. Cuando está en Vim, -- INSERT --
convierte en -- INSERT (paste) --
Respuesta:
Bien, aquí hay un manual de "tirar y poner" …
En Vim, los comandos principales para tirar (copiar) y poner (pegar) son y
y p
.
Yanking coloca el texto extraído en un registro. Ese registro es el registro sin nombre "
, de forma predeterminada, pero se pueden usar otros registros:
"ay " yank into register a
"by " yank into register b
"+y " yank into clipboard register
[…]
Del mismo modo, poner inserta texto de un registro. Ese registro es el registro sin nombre por defecto, pero se pueden usar otros registros:
"ap " put from register a
"+p " put from clipboard register
"3p " put from the register 3
[…]
Esos comandos se prefieren a "Clic derecho / Pegar o Clic central o CTRL + MAYÚS + V" porque el texto se "coloca" en el búfer sin ningún tratamiento especial. Con "Clic derecho / Pegar o Clic central o CTRL + MAYÚS + V", el texto se inserta en el búfer como si lo hubiera escrito y, por lo tanto, se somete a sangría / formateo automático.
Si no puede usar "+p
o "*p
– trabajando sobre SSH sin reenvío X o Vim construido sin soporte para portapapeles – la opción de paste
deshabilita la sangría automática y un montón de otras opciones muy útiles para que su texto escrito no esté ya escrito.
Como se indica en :help 'paste'
, las opciones tienen efectos secundarios potencialmente muy graves, por lo que es importante deshabilitarlas inmediatamente después de pegar el texto:
:set paste
(paste)
:set nopaste
Ese baile es obviamente un dolor en el trasero, por lo que hay otra opción que te permite definir un atajo especial para alternar entre paste
:
set pastetoggle=<F12>
Eso reduce ligeramente el dolor:
<F12>
(paste)
<F12>
Pero sigue siendo un dolor.
Si puede, se recomienda instalar un Vim adecuado con soporte para portapapeles para que pueda usar "*p
o "+p
(dependiendo de cómo haya copiado el texto) para pegar el texto de la manera correcta .
- En Mac OS X: instale MacVim,
- en sistemas basados en Debian: instale el paquete vim-gnome o vim-gtk,
- en CentOS: instale el paquete mejorado vim.
Referencia:
:help p
:help y
:help registers
:help 'paste'
:help 'pastetoggle'