Paramètres pour copier-coller avec une indentation correcte dans Visual Studio Code

94

Lorsque je copie et colle un morceau de code à l'aide de Visual Studio Code, après avoir appuyé sur Entrée pour créer une nouvelle ligne , ce qui suit se produit:

entrez la description de l'image ici

Il semble conserver l'indentation créée par la nouvelle ligne, en ajoutant les informations précédentes de l'extrait copié par-dessus. Je préfère que le code soit auto-embelli sur pâte.

Ce comportement peut-il être modifié via les paramètres?

EDIT: Je ne fais pas référence au copier-coller multiplateforme, je fais référence au copier-coller dans le même fichier dans Visual Studio Code.

Tiago
la source
a) ne copiez pas les espaces de la première ligne de votre source ou b) lors du collage assurez-vous que votre curseur est au début de la ligne. Fondamentalement, VSC le passe là-dedans "tel quel".
newBee
Alors n'y a-t-il aucun moyen de changer cela via les paramètres?
Tiago
Mettre le texte en surbrillance et le déplacer avec ALT + Arrowkeypréservera l'indentation. Pour ceux qui recherchent une alternative à la modification des paramètres.
Daniel Thompson

Réponses:

98

Ceci est déjà intégré dans vscode avec "editor.formatOnPaste": truepropriété dans les paramètres.

Andy
la source
12
Malheureusement, cela formate également tout code collé, ce qui n'est pas toujours ce que vous voulez.
philraj
2
Non, ce n'est pas pareil. Il existe un problème de longue date github.com/Microsoft/vscode/issues/6392 , qui est fermé, mais qui n'est pas résolu, voir les commentaires. Tout ce que nous voulons, c'est juste garder / faire correspondre le niveau d'indentation de la ligne de destination / cible, pas le niveau initial, d'où le texte a été copié, pendant "editor.formatOnPaste": truele formatage, par exemple PEP8 pour python.
ololobus
Eh bien, cela fonctionne comme je le souhaite. Je veux qu'il passe la section où j'ai copié où se trouve le curseur lorsque je colle
Dave Pile
2
Chaque éditeur de texte, à l'exception de VSCode, permet à un utilisateur de cliquer trois fois et de mettre en surbrillance n'importe quel texte. CTRL C pour copier et CTRL V, CTRL V pour dupliquer le texte copié. Sauf dans VS Code, un triple clic CTRL C CTRL V ajuste le texte, puis le 2ème CTRL V le rend encore pire. CTRL C CTRL V est le plus courant des raccourcis clavier, même ma mère connaît celui-ci.
NZ Dev
3
Ce n'est pas une opinion, autant que je suis d'accord avec le reste de votre déclaration. COPY et COLLER NE DEVRAIENT PAS AVOIR D'OPINION, c'est COPY et COLLER qu'ils ne devraient fonctionner que dans un seul sens.
NZ Dev
41

Ce plugin peut vous aider:

extension coller et indenter

Il vous suffit de changer le raccourci et cela fonctionne. N'oubliez pas que vous souhaitez probablement utiliser 'cmd'plutôt que 'ctrl'si vous êtes sur un mac. Comme ça:

{
    "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
la source
9
Utilisez ceci pour recréer le comportement de Sublime Text 3 ie. cmd + shift + v pour coller- { "key": "cmd+shift+v", "command": "pasteAndIndent.action", "when": "editorTextFocus && !editorReadonly" }
indent
Cette solution fonctionne toujours. Plus aucun onglet supplémentaire méchant que le code n'aime à mettre à chaque fois que je copie / colle.
Lumineux
6
Trouvez-le, allez dans "Raccourcis clavier" puis cliquez sur l'icône "Ouvrir les raccourcis clavier JSON" en haut à droite de l'écran, difficile à trouver je pense!
Matt Fletcher
Cette extension a un gros inconvénient: elle formate l'intégralité du code du fichier lors du collage, pas seulement le morceau à coller! J'ai dû désinstaller.
sdlins
Pour localiser l' keybindings.jsonendroit où vous devez ajouter l'extrait de code JSON: Recherchez "Préférences: Ouvrir les raccourcis clavier (JSON) dans la palette de commandes
Cornelius Roemer
13

Ctrl+ Vsuivi de Ctrl+ Zsemble fonctionner hors de la boîte.

Philippe
la source
2
Cela fonctionne étonnamment. Un peu ennuyeux d'avoir à faire ça, mais c'est mieux que rien
Nate Beers
Avez-vous essayé Cmd + V et Cmd + Z?
Philippe
laissez-le si un produit Microsoft ne parvient pas à gérer la capacité de copier et coller ... OMG tellement heureux que j'utilise un ordinateur portable Linux ... merci cette solution de contournement fonctionne
Scott Stensland
-3

Une solution simple consiste à essayer Ctrl+ Shift+ Vaprès avoir copié le code. Il collera tous les codes correctement avec des indentations.

vikrant gupta
la source
Cela ne fonctionne pas, exactement la même chose. Vous essayez ceci: paragraphe en surbrillance - CTRL C, CTRL + SHFT + V, CTRL + SHFT + V. Ça devient moche !!!!
NZ Dev
«Essayer» semble étrange. Qu'est-ce que cela fait exactement? Et si un utilisateur modifiait les raccourcis?
Nico Haase