Pengaturan untuk menyalin tempel dengan lekukan yang benar dalam Visual Studio Code

96

Ketika saya menyalin dan menempelkan bagian kode menggunakan Visual Studio Code, setelah menekan enter untuk membuat baris baru , berikut ini yang terjadi:

masukkan deskripsi gambar di sini

Tampaknya mempertahankan lekukan yang dibuat oleh baris baru, menambahkan informasi sebelumnya dari cuplikan yang disalin di atasnya. Saya lebih suka kode itu diperindah otomatis saat ditempel.

Bisakah perilaku ini diubah melalui pengaturan?

EDIT: Saya tidak mengacu pada copy-paste lintas platform, saya mengacu pada menyalin dan menempel dalam file yang sama dalam Visual Studio Code.

Tiago
sumber
a) jangan menyalin spasi pada baris pertama dari sumber Anda atau b) saat menempelkannya pastikan kursor Anda berada di awal baris. Pada dasarnya VSC hanya menempelkannya di sana "sebagaimana adanya".
newBee
Jadi, apakah tidak ada cara untuk mengubahnya melalui pengaturan?
Tiago
Menyoroti teks dan memindahkannya dengan ALT + Arrowkeyakan mempertahankan lekukan. Bagi mereka yang mencari alternatif untuk mengubah pengaturan.
Daniel Thompson

Jawaban:

103

Ini sudah terintegrasi dalam vscode dengan "editor.formatOnPaste": trueproperti dalam pengaturan.

andy
sumber
12
Sayangnya, ini juga memformat kode yang ditempel, yang tidak selalu Anda inginkan.
philraj
2
Tidak, ini tidak sama. Ada masalah berumur panjang github.com/Microsoft/vscode/issues/6392 , yang ditutup, tetapi sebenarnya tidak terselesaikan, lihat komentar. Yang kita inginkan hanyalah menjaga / mencocokkan tingkat indentasi garis tujuan / target, bukan tingkat awal tempat teks disalin, saat "editor.formatOnPaste": truesedang melakukan format, misalnya PEP8 dari python.
ololobus
Itu bekerja seperti yang saya inginkan. Saya ingin melewati bagian yang saya salin ke mana pun kursor berada saat saya menempelkan
Dave Pile
2
Setiap Editor Teks kecuali VSCode memungkinkan Pengguna untuk mengeklik tiga kali dan menyorot teks apa pun. CTRL C untuk menyalin dan kemudian CTRL V, CTRL V untuk menduplikasi teks yang disalin. Kecuali di VS Code, klik tiga kali lipat CTRL C CTRL V menyesuaikan teks dan kemudian CTRL V ke-2 membuatnya lebih buruk. CTRL C CTRL V adalah pintasan keyboard yang paling umum, bahkan ibuku tahu yang ini.
NZ Dev
3
Ini tidak beropini, sebanyak saya setuju dengan sisa pernyataan Anda. COPY dan PASTE HARUS TIDAK MEMILIKI opini, COPY dan PASTE seharusnya hanya bekerja 1 cara.
NZ Dev
41

Plugin ini dapat membantu Anda:

paste-and-indent extension

Anda hanya perlu mengubah pintasan dan berhasil. Ingatlah bahwa Anda mungkin ingin menggunakan 'cmd'daripada 'ctrl'jika Anda menggunakan Mac. Seperti ini:

{
    "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
sumber
9
Gunakan ini untuk membuat ulang perilaku Sublime Text 3 yaitu. cmd + shift + v untuk menempelkan indentasi: { "key": "cmd+shift+v", "command": "pasteAndIndent.action", "when": "editorTextFocus && !editorReadonly" }
phocks
Solusi ini masih berfungsi. Tidak ada lagi tab ekstra yang menjijikkan vs kode yang suka dimasukkan setiap kali saya salin / tempel.
Bercahaya
6
Ketemu, masuk ke "Pintasan Keyboard" lalu klik ikon "Buka Pintasan Keyboard JSON" di kanan atas layar, menurut saya sulit untuk ditemukan!
Matt Fletcher
Ekstensi ini memiliki kerugian besar : ia memformat seluruh kode file saat menempelkan, tidak hanya bagian yang ditempel! Saya harus mencopot pemasangan.
sdlins
Untuk menemukan di keybindings.jsonmana Anda perlu menambahkan cuplikan JSON: Search for "Preferences: Open Keyboard Shortcuts (JSON) di Command Palette
Cornelius Roemer
14

Ctrl+ Vdiikuti oleh Ctrl+ Zsepertinya berhasil di luar kotak.

Philippe
sumber
2
Ini secara mengejutkan berhasil. Agak menjengkelkan harus melakukan itu, tapi itu lebih baik daripada tidak sama sekali
Nate Beers
Apakah Anda mencoba Cmd + V dan Cmd + Z?
Philippe
biarkan saja sehingga produk Microsoft gagal menangani kemampuan untuk menyalin dan menempel ... OMG sangat senang saya menggunakan laptop linux ... terima kasih solusi ini berhasil
Scott Stensland
-2

Perbaikan sederhana adalah mencoba Ctrl+ Shift+ Vsetelah menyalin kode. Ini akan menempelkan semua kode dengan benar dengan lekukan di dalamnya.

Vikrant gupta
sumber
Ini tidak bekerja, persis sama. Anda mencoba ini: sorot paragraf - CTRL C, CTRL + SHFT + V, CTRL + SHFT + V. Jelek !!!!
NZ Dev
"Mencoba" terdengar aneh. Apa sebenarnya fungsi itu? Bagaimana jika pengguna mengubah pintasan?
Nico Haase