VIM comentando lo que pego

14

Obtuve esto al intentar copiar esta esencia en vim: https://gist.github.com/w0ng/3278077

ingrese la descripción de la imagen aquí

Noto el mismo comportamiento en todas partes: si pego algo que incluye un comentario, se pega todo lo que sigue al comentario.

Tal vez tenga algo que ver con el hecho de que si escribo un comentario en el modo de inserción y presiono enter, la siguiente línea agrega automáticamente un comentario.

¿Cómo puedo deshacerme de este comportamiento?

jviotti
fuente

Respuestas:

26

Ingrese al modo pegar antes de pegar:

:set paste

Para volver al modo "normal":

:set nopaste
Estera
fuente
66
o: establecer pegar! toggle :)
valbaca
@valbaca Puedes usar backticks para crear code blockscomentarios
Izkata
¡Necesitaba esos comandos al revés!
11

Además de la pasteopción mencionada por Mat , también puede acceder directamente al portapapeles X desde VIM:

  • "*p para insertar la selección X11
  • "+p para insertar el portapapeles X11

Necesita una versión VIM con soporte X11 (en Debian y sus derivados necesita instalar el paquete vim-gtko vim-gnome).

Para obtener más información, consulte la documentación ( :help x11-selection).

jofel
fuente
6

Esto es lo que está pasando. Hay opciones de formato de Vim que comentan automáticamente nuevas líneas cuando estás en una línea de comentarios. Algunas de estas opciones generalmente están habilitadas de manera predeterminada. Por ejemplo,

# a comment<CR>
# 

Como puede ver, la nueva línea se antepone automáticamente con un carácter de comentario. Puede deshabilitar la mayoría de estas opciones eliminando cy rdesde la configuración formatoptions. Consulte :h fo-tablepara obtener más información sobre estas opciones.

:set formatoptions-=cr

Vim no tiene forma de diferenciar entre el texto que se pega con los mecanismos de pegado del emulador de terminal y el texto que escribe. Establecer las opciones de pegado ( set paste) le dice a Vim que espere texto pegado y deshabilite cualquier opción de formato que no sea deseable.


fuente
3

Mi favorito es usar el putcomando.

  • :put* pegar de la selección en la línea actual
  • :put+ pegar desde el búfer en la línea actual

"*p/ /"+p también es bueno, pero :pu[t]tiene algunas ventajas:

  • siempre se pega linealmente
  • Puede agregar un parámetro adicional para controlar dónde insertar:
    • :$put+ pegar después de la última línea
    • :0put+ pegar al comienzo del archivo
defhlt
fuente
1

Como respuesta secundaria, si tiene algún archivo que tenga esto, puede deshacerse de él ingresando al modo de bloqueo Vertical Visual

ctrl+ vy luego usando las teclas de flecha / hjkl para navegar por las partes que desea eliminar y luego simplemente presionandod

A veces encuentro esto más rápido que deshacer la configuración del modo pegar, pegar y desarmar el modo pegar.

exussum
fuente