Einstellungen zum Kopieren und Einfügen mit korrektem Einzug in Visual Studio Code

93

Wenn ich einen Code mit Visual Studio Code kopiere und einfüge , geschieht Folgendes , nachdem ich die Eingabetaste gedrückt habe, um eine neue Zeile zu erstellen :

Geben Sie hier die Bildbeschreibung ein

Es scheint den durch die neue Zeile erzeugten Einzug beizubehalten und die vorherigen Informationen aus dem kopierten Snippet darüber hinzuzufügen. Ich möchte lieber, dass der Code beim Einfügen automatisch verschönert wird.

Kann dieses Verhalten durch Einstellungen geändert werden?

BEARBEITEN: Ich beziehe mich nicht auf plattformübergreifendes Kopieren und Einfügen, sondern auf das Kopieren und Einfügen in dieselbe Datei in Visual Studio Code.

Tiago
quelle
a) Kopieren Sie nicht die Leerzeichen der ersten Zeile aus Ihrer Quelle oder b) stellen Sie beim Einfügen sicher, dass sich der Cursor am Zeilenanfang befindet. Grundsätzlich wird es von VSC einfach so "wie es ist" eingefügt.
NewBee
Gibt es also keine Möglichkeit, dies durch Einstellungen zu ändern?
Tiago
Wenn Sie den Text markieren und mit verschieben, ALT + Arrowkeybleibt die Einrückung erhalten. Für diejenigen, die nach einer Alternative zum Ändern von Einstellungen suchen.
Daniel Thompson

Antworten:

97

Dies ist bereits in vscode mit der "editor.formatOnPaste": trueEigenschaft in den Einstellungen integriert.

Andy
quelle
12
Dies formatiert leider auch eingefügten Code, was nicht immer das ist, was Sie wollen.
Philraj
2
Nein, es ist nicht dasselbe. Es gibt ein langlebiges Problem, github.com/Microsoft/vscode/issues/6392 , das geschlossen, aber tatsächlich nicht behoben ist (siehe Kommentare). Alles, was wir wollen, ist nur, die Einrückungsstufe der Ziel- / "editor.formatOnPaste": trueZielzeile beizubehalten / anzupassen , nicht die Anfangsebene, von der Text kopiert wurde, während das Format ausgeführt wird, z. B. PEP8 für Python.
Ololobus
Nun, es funktioniert so, wie ich es will. Ich möchte, dass es über den Abschnitt hinausgeht, in den ich beim Einfügen kopiert habe
Dave Pile
1
Mit jedem Texteditor außer VSCode kann ein Benutzer dreimal klicken und Text markieren. STRG C zum Kopieren und dann STRG V, STRG V zum Duplizieren des kopierten Textes. Außer im VS-Code passt ein Dreifachklick STRG C STRG V den Text an und der 2. STRG V macht ihn noch schlimmer. STRG C STRG V ist die häufigste Tastenkombination, selbst meine Mutter kennt diese.
NZ Dev
2
Dies ist keine Meinung, so sehr ich dem Rest Ihrer Aussage zustimme. KOPIEREN und EINFÜGEN SOLLTEN KEINE Meinung haben, es ist KOPIEREN und EINFÜGEN, sie sollten nur in eine Richtung arbeiten.
NZ Dev
39

Dieses Plugin kann Ihnen helfen:

Paste-and-Indent-Erweiterung

Sie müssen nur die Verknüpfung ändern und es funktioniert. Denken Sie daran, dass Sie wahrscheinlich verwenden möchten, 'cmd'anstatt, 'ctrl'wenn Sie auf einem Mac sind. So was:

{
    "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
quelle
9
Verwenden Sie diese Option, um das Verhalten von Sublime Text 3 wiederherzustellen. cmd + shift + v zum Einfügen: { "key": "cmd+shift+v", "command": "pasteAndIndent.action", "when": "editorTextFocus && !editorReadonly" }
phocks
Diese Lösung funktioniert immer noch. Bei jedem Kopieren / Einfügen wird kein böser zusätzlicher Tab mehr gegen Code eingefügt.
Leuchtender
6
Wenn Sie es gefunden haben, gehen Sie zu "Tastaturkürzel" und klicken Sie dann auf das Symbol "Tastaturkürzel öffnen JSON" oben rechts auf dem Bildschirm. Ich denke, es ist schwer zu finden!
Matt Fletcher
Diese Erweiterung hat einen großen Nachteil: Sie formatiert beim Einfügen den gesamten Dateicode, nicht nur das Teil, das eingefügt wird! Ich musste deinstallieren.
SDLINS
So keybindings.jsonsuchen Sie, wo Sie das JSON-Snippet hinzufügen müssen: Suchen Sie in der Befehlspalette nach "Einstellungen: Öffnen Sie Tastaturkürzel (JSON)"
Cornelius Roemer
12

Ctrl+ Vgefolgt von Ctrl+ Zscheint sofort zu funktionieren.

Philippe
quelle
2
Das funktioniert überraschenderweise. Etwas nervig, das tun zu müssen, aber es ist besser als nichts
Nate Beers
Haben Sie Cmd + V und Cmd + Z ausprobiert?
Philippe
Lassen Sie es so, dass ein Microsoft-Produkt die Fähigkeit zum Kopieren und Einfügen nicht beherrscht ... OMG ist so glücklich, dass ich einen Linux-Laptop verwende ... danke, dass diese Problemumgehung funktioniert
Scott Stensland
-3

Eine einfache Lösung ist , zu versuchen , Ctrl+ Shift+ Vnach dem Code zu kopieren. Alle Codes werden mit Einrückungen korrekt eingefügt.

Vikrant Gupta
quelle
Das funktioniert nicht genauso. Sie versuchen dies: Markieren Sie Absatz - STRG C, STRG + SHFT + V, STRG + SHFT + V. Es wird hässlich !!!!
NZ Dev
"Versuchen" klingt seltsam. Was genau macht das? Was ist, wenn ein Benutzer die Verknüpfungen geändert hat?
Nico Haase