Configuración para copiar y pegar con sangría correcta en Visual Studio Code

96

Cuando copio y pego un fragmento de código usando Visual Studio Code, después de presionar enter para crear una nueva línea , sucede lo siguiente:

ingrese la descripción de la imagen aquí

Parece mantener la sangría creada por la nueva línea, agregando la información anterior del fragmento copiado encima. Preferiría que el código se embelleciera automáticamente al pegar.

¿Se puede cambiar este comportamiento a través de la configuración?

EDITAR: No me refiero a copiar y pegar multiplataforma, me refiero a copiar y pegar dentro del mismo archivo en Visual Studio Code.

Tiago
fuente
a) no copie los espacios de la primera fila de su fuente ob) al pegarla, asegúrese de que el cursor esté al principio de la línea. Básicamente, VSC simplemente lo pasa allí "tal como está".
newBee
Entonces, ¿no hay forma de cambiar eso a través de la configuración?
Tiago
Resaltar el texto y moverlo ALT + Arrowkeyconservará la sangría. Para aquellos que buscan una alternativa al cambio de configuración.
Daniel Thompson

Respuestas:

103

Esto ya está integrado en vscode con la "editor.formatOnPaste": truepropiedad en la configuración.

Andy
fuente
12
Desafortunadamente, esto también formatea cualquier código pegado, que no siempre es lo que desea.
philraj
2
No, no es lo mismo. Hay un problema de larga duración github.com/Microsoft/vscode/issues/6392 , que está cerrado, pero en realidad no se ha resuelto, consulte los comentarios. Todo lo que queremos es mantener / igualar el nivel de sangría de la línea de destino / objetivo, no el nivel inicial, desde donde se copió el texto, mientras "editor.formatOnPaste": truese realiza el formato, por ejemplo, PEP8 para python.
ololobus
Bueno, funciona como quiero. Quiero que pase la sección en la que copié donde esté el cursor cuando pego
Dave Pile
2
Todos los editores de texto, excepto VSCode, permiten al usuario hacer triple clic y resaltar cualquier texto. CTRL C para copiar y luego CTRL V, CTRL V para duplicar el texto copiado. Excepto en VS Code, un triple clic CTRL C CTRL V ajusta el texto y luego el segundo CTRL V lo empeora aún más. CTRL C CTRL V es el método abreviado de teclado más común, incluso mi mamá lo conoce.
Desarrollador de Nueva Zelanda
3
Esto no tiene opiniones, tanto como estoy de acuerdo con el resto de su declaración. COPIAR y PEGAR NO DEBEN TENER opinión, es COPIA y PEGAR que solo deberían funcionar de una manera.
Desarrollador de Nueva Zelanda
41

Este complemento puede ayudarlo a:

extensión de pegar y sangrar

Solo tienes que cambiar el atajo y funciona. Recuerda que probablemente quieras usarlo en 'cmd'lugar de hacerlo 'ctrl'si estás en una Mac. Me gusta esto:

{
    "key": "ctrl+v",
    "command": "pasteAndIndent.action",
    "when": "editorTextFocus && !editorReadonly"
},
{
    "key": "ctrl+v",
    "command": "editor.action.clipboardPasteAction",
    "when": "!editorTextFocus"
},
{
    "key": "ctrl+shift+v",
    "command": "editor.action.clipboardPasteAction",
    "when": "editorTextFocus && !editorReadonly"
}
hallow_me
fuente
9
Use esto para recrear el comportamiento de Sublime Text 3, es decir. cmd + shift + v para pegar sangría: { "key": "cmd+shift+v", "command": "pasteAndIndent.action", "when": "editorTextFocus && !editorReadonly" }
phocks
Esta solución todavía funciona. No más pestañas extra desagradables frente al código que le gusta poner cada vez que copio / pego.
Luminoso
6
Lo encontré, vaya a "Atajos de teclado" y luego haga clic en el icono "Abrir atajos de teclado JSON" en la parte superior derecha de la pantalla, creo que es difícil de encontrar.
Matt Fletcher
Esta extensión tiene una gran desventaja: formatea todo el código del archivo al pegar, ¡no solo la pieza que se está pegando! Tuve que desinstalar.
sdlins
Para ubicar el lugar keybindings.jsondonde debe agregar el fragmento JSON: busque "Preferencias: Abrir atajos de teclado (JSON) en la paleta de comandos
Cornelius Roemer
14

Ctrl+ Vseguido de Ctrl+ Zparece funcionar fuera de la caja.

Philippe
fuente
2
Esto sorprendentemente funciona. Es un poco molesto tener que hacer eso, pero es mejor que nada
Nate Beers
¿Probaste Cmd + V y Cmd + Z?
Philippe
déjelo para que un producto de Microsoft no pueda manejar la capacidad de copiar y pegar ... Dios mío, tan feliz que uso una computadora portátil Linux ... gracias, esta solución funciona
Scott Stensland
-3

Una solución simple es probar Ctrl+ Shift+ Vdespués de copiar el código. Pegará todos los códigos correctamente con sangrías.

vikrant gupta
fuente
Esto no funciona, exactamente igual. Intente esto: resaltar párrafo - CTRL C, CTRL + SHFT + V, CTRL + SHFT + V. ¡Se pone feo!
Desarrollador de Nueva Zelanda
"Probar" suena extraño. ¿Qué hace eso exactamente? ¿Qué pasa si un usuario cambia los accesos directos?
Nico Haase