การตั้งค่าเพื่อคัดลอกวางด้วยการเยื้องที่ถูกต้องใน Visual Studio Code


96

เมื่อฉันคัดลอกและวางโค้ดโดยใช้ Visual Studio Code หลังจากกด Enter เพื่อสร้างบรรทัดใหม่สิ่งต่อไปนี้จะเกิดขึ้น:

ป้อนคำอธิบายภาพที่นี่

ดูเหมือนว่าจะเก็บการเยื้องที่สร้างขึ้นโดยบรรทัดใหม่โดยเพิ่มข้อมูลก่อนหน้าจากตัวอย่างข้อมูลที่คัดลอกไว้ด้านบน ฉันอยากให้โค้ดนี้สวยงามโดยอัตโนมัติเมื่อวาง

พฤติกรรมนี้สามารถเปลี่ยนแปลงได้ผ่านการตั้งค่าหรือไม่?

แก้ไข: ฉันไม่ได้หมายถึงการคัดลอกวางข้ามแพลตฟอร์มฉันหมายถึงการคัดลอกและวางภายในไฟล์เดียวกันใน Visual Studio Code


a) อย่าคัดลอกช่องว่างของแถวแรกจากแหล่งที่มาของคุณหรือ b) เมื่อวางให้แน่ใจว่าเคอร์เซอร์ของคุณอยู่ที่จุดเริ่มต้นของบรรทัด โดยทั่วไป VSC จะวางมันไว้ตรงนั้น "ตามที่เป็น"
newBee

ไม่มีวิธีใดที่จะเปลี่ยนผ่านการตั้งค่า?
Tiago

การไฮไลต์ข้อความและย้ายไปด้วยALT + Arrowkeyจะรักษาการเยื้องไว้ สำหรับผู้ที่มองหาทางเลือกในการเปลี่ยนการตั้งค่า
Daniel Thompson

คำตอบ:


103

สิ่งนี้รวมอยู่แล้วใน vscode พร้อม"editor.formatOnPaste": trueคุณสมบัติในการตั้งค่า


12
นอกจากนี้ยังจัดรูปแบบโค้ดที่วางไว้ซึ่งไม่ใช่สิ่งที่คุณต้องการเสมอไป
philraj

2
ไม่มันไม่เหมือนกัน มีปัญหาที่อยู่มานานgithub.com/Microsoft/vscode/issues/6392ซึ่งปิดไปแล้ว แต่ไม่ได้รับการแก้ไขโปรดดูความคิดเห็น ทุกสิ่งที่เราต้องการมีเพียงเพื่อให้ / จับคู่ระดับการเยื้องของบรรทัดปลายทาง / เป้าหมายไม่ใช่ระดับเริ่มต้นซึ่งข้อความถูกคัดลอกมาจากขณะที่"editor.formatOnPaste": trueกำลังทำรูปแบบเช่น PEP8 เทียวหลาม
ololobus

มันได้ผลตามที่ฉันต้องการ ฉันต้องการให้ที่ผ่านมาส่วนที่ผมคัดลอกไปที่ใดก็ตามที่เคอร์เซอร์อยู่เมื่อฉันวาง
เดฟกอง

2
โปรแกรมแก้ไขข้อความทุกตัวยกเว้น VSCode อนุญาตให้ผู้ใช้คลิกสามครั้งและเน้นข้อความใด ๆ CTRL C เพื่อคัดลอกแล้ว CTRL V, CTRL V เพื่อทำซ้ำข้อความที่คัดลอก ยกเว้นใน VS Code การคลิกสามครั้ง CTRL C CTRL V จะปรับข้อความจากนั้น CTRL V ที่ 2 จะทำให้แย่ลงไปอีก CTRL C CTRL V เป็นแป้นพิมพ์ลัดที่พบบ่อยที่สุดแม้แต่แม่ของฉันก็รู้จักอันนี้
NZ Dev

3
นี่ไม่ได้มีการแสดงความคิดเห็นเท่าที่ฉันเห็นด้วยกับส่วนที่เหลือของคำแถลงของคุณ COPY และ PASTE ไม่ควรมีความคิดเห็นเป็น COPY และ PASTE ควรใช้งานได้ 1 วิธีเท่านั้น
NZ Dev

41

ปลั๊กอินนี้อาจช่วยคุณ:

วางและเยื้องส่วนขยาย

คุณต้องเปลี่ยนทางลัดและใช้งานได้ โปรดจำไว้ว่าคุณอาจต้องการใช้'cmd'แทน'ctrl'หากคุณใช้ Mac แบบนี้:

{
    "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"
}

9
ใช้สิ่งนี้เพื่อสร้างพฤติกรรม Sublime Text 3 ขึ้นใหม่เช่น cmd + shift + v เพื่อวางเยื้อง: { "key": "cmd+shift+v", "command": "pasteAndIndent.action", "when": "editorTextFocus && !editorReadonly" }
phocks

วิธีนี้ยังคงใช้งานได้ ไม่มีแท็บพิเศษที่น่ารังเกียจอีกต่อไปเทียบกับโค้ดที่ชอบใส่ทุกครั้งที่ฉันคัดลอก / วาง
Luminous

6
เจอแล้วให้เข้าไปที่ "Keyboard Shortcuts" แล้วคลิกไอคอน "Open Keyboard Shortcuts JSON" ที่มุมขวาบนของหน้าจอหายากนะ!
Matt Fletcher

ส่วนขยายนี้มีขนาดใหญ่ข้อเสีย: มันรูปแบบรหัสไฟล์ทั้งหมดเมื่อวางไม่เพียง แต่ชิ้นส่วนที่ถูกวาง! ฉันต้องถอนการติดตั้ง
sdlins

หากต้องการค้นหาตำแหน่งkeybindings.jsonที่คุณต้องเพิ่มข้อมูลโค้ด JSON: ค้นหา "Preferences: Open Keyboard Shortcuts (JSON) ใน Command Palette
Cornelius Roemer

14

Ctrl+ Vตามด้วยCtrl+ Zดูเหมือนจะทำงานนอกกรอบ


2
สิ่งนี้ได้ผลอย่างน่าประหลาดใจ น่ารำคาญที่ต้องทำแบบนั้น แต่ก็ดีกว่าไม่มีอะไรเลย
Nate Beers

คุณลอง Cmd + V และ Cmd + Z หรือไม่?
Philippe

ปล่อยให้ผลิตภัณฑ์ของ Microsoft ไม่สามารถจัดการกับความสามารถในการคัดลอกและวางได้ ... OMG มีความสุขมากที่ได้ใช้แล็ปท็อป linux ... ขอบคุณวิธีแก้ปัญหานี้ได้ผล
Scott Stensland

-2

วิธีแก้ไขง่ายๆคือลองCtrl+ Shift+ Vหลังจากคัดลอกโค้ด มันจะวางรหัสทั้งหมดอย่างถูกต้องโดยมีการเยื้องอยู่ในนั้น


ไม่ได้ผลเหมือนกันทุกประการ คุณลองทำสิ่งนี้: เน้นย่อหน้า - CTRL C, CTRL + SHFT + V, CTRL + SHFT + V มันน่าเกลียด !!!!
NZ Dev

"ต้องลอง" ฟังดูแปลก ๆ มันทำอะไรกันแน่? จะเกิดอะไรขึ้นหากผู้ใช้เปลี่ยนทางลัด
Nico Haase
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.