Visual Studio: คีย์ลัด: Duplicate Line


423

มีทางลัดสำหรับคำสั่งDuplicate LineในVisual Studio 2008 หรือไม่?

ตัวอย่างที่คล้ายกัน:


6
เพียงเพื่อทราบข้อมูลหนึ่งในประโยชน์มากมายที่ ReSharper มอบให้คือความสามารถในการทำเช่นนี้
AakashM

2
visualstudiogallery.msdn.microsoft.com/ ดาวน์โหลดนี้และ alt + D จะทำซ้ำการเลือกของคุณหรือหากไม่มีการเน้นอะไรเลยจะเป็นการทำซ้ำทั้งบรรทัด น่าเสียดายที่มาโคร Visual Basic ไม่สามารถใช้งานได้ในปี 2013 มีเพียง js macros เท่านั้น
shenk

1
OMG มีปัญหาอะไรในการมอบหมายชุดค่าผสมให้กับบุคคลที่ต้องการทำซ้ำสาย ??? ฉันเคย Eclipse และ Ctrl + D สำหรับลบบรรทัด ทำไมมันจึงซับซ้อนใน VS ???
Andrii Muzychuk

2
@mghhgm ด้านล่างเป็นคำตอบที่คุณกำลังมองหา (Shift + alt + down หรือ shift + alt + up)
Victor Barrantes

1
ตัวอย่างเสียงเรียกเข้าไม่ได้ทำซ้ำมันคือ ctrl + c; ctrl + v ตัด "Yank" และวาง p มันไม่เหมือนกับตัวอย่างอื่น ๆ
Aneves

คำตอบ:


406

ใน Visual Studio 2019

Ctrl + D

ใน Visual Studio 2017 (v15.6 และหลัง)

Ctrl + D

ใน Visual Studio 2017 (ก่อน v15.6)

(แก้ไข) ตอนนี้คุณลักษณะนี้มีอยู่แล้วใน VS2017: Ctrl+ E, Vทำซ้ำบรรทัดหากไม่มีการเลือกอะไรเลยหรือการเลือกซ้ำ คุณสามารถกำหนดให้ชุดค่าผสมอื่นหรือค้นหาในเมนู:

บรรทัดที่ซ้ำกันใน VS2017

ดูการอ้างอิงนี้สำหรับข้อมูลเพิ่มเติม

ก่อน VS2017 วิธีการในตัวโดยใช้คลิปบอร์ด

ตามที่ @cand คุณสามารถทำได้Ctrl+ C; Ctrl+ V.

Ctrl+ Cจะคัดลอกบรรทัดหากไม่มีการเลือกอะไรเลย

โซลูชันมาโคร (ก่อน VS2017)

หากคุณต้องการใช้โซลูชันที่สมบูรณ์ยิ่งขึ้นบางทีการสร้างแป้นพิมพ์ลัดที่ง่ายกว่าหรือคุณไม่ต้องการให้คลิปบอร์ดมีผลต่อดูที่คู่มือนี้:

คำสั่ง line ซ้ำสำหรับ Visual Studio

Visual Basic:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module DuplicateLastLineModule
    Sub DuplicateLine()
        Dim line As String
        DTE.ActiveDocument.Selection.StartOfLine(0)
        DTE.ActiveDocument.Selection.EndOfLine(True)
        line = DTE.ActiveDocument.Selection.Text
        DTE.ActiveDocument.Selection.EndOfLine()
        DTE.ActiveDocument.Selection.NewLine()
        DTE.ActiveDocument.Selection.StartOfLine(0)
        DTE.ActiveDocument.Selection.Text = line
    End Sub
End Module

ในการสร้างมาโครเพียงไปที่ macro explorer ("Tools-> Macros-> Macro Explorer" หรือAlt+ F8) และคัดลอกวางโค้ดในโมดูลใหม่ ตอนนี้เพียงกำหนดแป้นพิมพ์ลัดให้:

  1. ไปที่เครื่องมือ -> ตัวเลือก ...
  2. ภายใต้สภาพแวดล้อมคลิกแป้นพิมพ์
  3. ในช่องข้อความ "แสดงคำสั่งที่มี" ให้ป้อน "ซ้ำ" (ซึ่งเป็นไปตามชื่อที่คุณให้กับโมดูล)
  4. ตอนนี้คุณควรเห็นมาโครในรายการด้านล่าง
  5. เลือก "ตัวแก้ไขข้อความ" จากรายการ "ใช้ทางลัดใหม่ใน"
  6. ตั้งค่าโฟกัสในกล่องข้อความ "กดปุ่มทางลัด" และกดปุ่มผสมบนคีย์บอร์ดที่คุณต้องการใช้ ( Ctrl+ Shift+ Dในกรณีของฉัน)
  7. กดปุ่ม "กำหนด"
  8. คุณควรเห็นทางลัดในกล่องข้อความ "ทางลัดสำหรับคำสั่งที่เลือก"
  9. กดปุ่ม OK

และนั่นคือมัน สนุก!


3
ฉันแค่พยายามมันและมันเป็นเรื่องที่น่าสนใจที่มันซ้ำอักขระพิเศษบางอย่างเมื่อมี "รหัสฝั่งเซิร์ฟเวอร์บล็อก" ที่มีแท็กสั้นเช่นนี้<div>Profile.UserName: <%=Profile.UserName %></div>- <div>Profile.UserName: <%=Profile.UserName %></div> %></div>หลังจากการทำซ้ำบรรทัดนี้ใช้แมโครนี้มันจะกลายเป็นดังต่อไปนี้: อย่างที่คุณเห็นส่วนสุดท้ายคือ "ซ้ำ" เมื่อไม่มีการบล็อกโค้ดฝั่งเซิร์ฟเวอร์มันก็ใช้งานได้ คุณรู้วิธีแก้ปัญหาสำหรับสิ่งนั้นหรือไม่? อย่างไรก็ตามสิ่งที่น่าสนใจอีกอย่างที่ฉันพบคือแมโครนี้ค่อนข้าง "ช้า" ซึ่งฉันไม่ได้คาดหวัง ... :)
Sk8erPeter

6
หลังจากกุมภาพันธ์ 2014 แมโครถูกปิดใช้งานด้วยเหตุผลด้านความปลอดภัย เลื่อนลงและดูคำตอบของ MasterHD สำหรับวิธีแก้ปัญหาเพื่อรับวิธีของ Wael เพื่อให้ทำงานได้แม้หลังจากการปรับปรุงความปลอดภัย
MasterHD

4
ฉันค้นหา Ctrl C + Ctrl V ที่จะ จำกัด ในกรณีที่ฉันได้คัดลอกบางสิ่งบางอย่างไปยังคลิปบอร์ดและต้องการทำซ้ำบรรทัดก่อนที่ฉันจะวาง
เลื่อย

1
เหตุใดในโลกนี้จึงเป็นเรื่องยากที่จะใช้การกระทำที่ซ้ำซ้อนหรือการผูกกุญแจซึ่งบรรณาธิการคนอื่น ๆ ส่วนใหญ่ทำอย่างมีประสิทธิภาพและอย่างสังหรณ์ใจ : /
kisanme

1
ทำไมมันถึงต้องการ ฉันคัดลอก smth ในแท็บอื่นฉันมาที่บรรทัดที่เฉพาะเจาะจงในแท็บนี้ฉันทำซ้ำบรรทัดแล้วใช้ <code> CTRL + V </code> เพื่อวางรหัสบางส่วนมิฉะนั้นฉันต้องไปและคัดลอกส่วนรหัสอื่นอีกครั้ง ..
Augustas

136

มีส่วนขยายฟรีที่คุณสามารถดาวน์โหลดได้ที่นี่ซึ่งให้คุณทำสำเนาบรรทัดโดยไม่ต้องแทนที่เนื้อหาของคลิปบอร์ด

โดยค่าเริ่มต้นมันถูกผูกไว้กับAlt+ Dแต่คุณสามารถเปลี่ยนเป็นอะไรก็ได้ที่คุณต้องการโดยไปที่ Tools-> Options-> Environment-> Keyboard พิมพ์ "ทำซ้ำ" ในช่องค้นหาและค้นหา "แก้ไขทำซ้ำเลือก" และแก้ไขทางลัดตามที่คุณต้องการ ฉันชอบCtrl+ Dเพื่อให้สอดคล้องกับบรรณาธิการอื่น ๆ


23
นี่คือคำตอบที่แท้จริงที่คุณกำลังมองหาทุกอย่างที่โพสต์ที่นี่นั้นฉลาด แต่ไม่ใช่สิ่งที่ถูกถาม
Remco Boom

8
Edit.DuplicateSelectionไม่ปรากฏว่ามีอยู่ใน VSE 2013 หรือสิ่งอื่นใดที่มีคำซ้ำซ้อนตามข้อเท็จจริง
ᴍᴀᴛᴛʙᴀᴋᴇʀ

1
visualstudiogallery.msdn.microsoft.com/…ทำงานได้กับ vse2013
Anders M.

2
Matthew คุณต้องคลิกลิงค์ที่นี่และติดตั้งส่วนขยาย จากนั้นคุณต้องปิดสตูดิโอแสดงภาพและเปิดใหม่อีกครั้ง จากนั้นคุณต้องไปที่เครื่องมือ ==> ตัวเลือก ==> สภาพแวดล้อม ==> แป้นพิมพ์และจากนั้นคุณต้องพิมพ์ซ้ำและคุณจะเห็น จากนั้นคุณสามารถกด F4 เพื่อให้มันทำหน้าที่เหมือน QEDIT หรืออะไรก็ตามที่คุณต้องการและชีวิตจะดี
ggb667

แม้ว่ามันจะเจ็บปวดเล็กน้อยที่จะต้องติดตั้งเครื่องมืออื่น แต่อันนี้ทำงานได้ดีและทำได้ดี ขอบคุณมาก!
Sbu

94

มันง่ายCtrl+ C; Ctrl+ V, ตรวจสอบ ลิงค์นี้ ตราบใดที่คุณไม่ได้เลือกข้อความใด ๆ นี้จะซ้ำบรรทัดเคอร์เซอร์จะจบลงเมื่อคุณกด+CtrlC


159
มีหลายครั้งที่คุณไม่ต้องการผ่านบอร์ดคลิปตัวอย่างเช่นถ้าคุณต้องการทำซ้ำบรรทัดแล้วแทนที่เนื้อหาบางส่วนด้วยสิ่งที่คุณมีในคลิปบอร์ด
Effata

7
แน่นอน แต่คำถามที่ถามถึงทางลัดไม่ใช่สำหรับการแก้ปัญหาทั่วไปสำหรับการแก้ไขข้อความดังนั้นฉันคิดว่าสำหรับจุดประสงค์ง่ายๆก็เพียงพอแล้ว (อย่างน้อยก็ในกรณีของฉัน)
cand

4
ขอบคุณ แต่ฉันคาดหวังบางอย่างเช่น Ctrl + j ใน Edit Plus หรือ Crtl + D ใน Notepad ++ ... มีใน VS2008 หรือใน VS2010
Posto

2
ฉันพบเพียงอันนี้เท่านั้น อย่างไรก็ตามมันก็ไม่ได้แย่ขนาดนั้นแน่นอนว่าจะง่ายกว่าถ้าใช้ ctrl + D แต่ถ้าคุณต้องการทำสำเนา 1 บรรทัดใน 100 เล่มคุณสามารถทำได้โดยใช้ ctrl + c (โดยไม่จำเป็นต้องเลือกอะไรให้ใส่ command prompt เหนือบรรทัดที่ต้องการ ) + 100 ครั้ง ctrl + v เป็นชุดการกดแป้นพิมพ์เพียงชุดเดียวมากกว่าโซลูชัน ctrl + d มันอาจเป็นปัญหาได้ถ้าคุณต้องการทำสำเนาที่ซับซ้อนมากขึ้น
cand

@ Mason240 นั่นเป็นปฏิกิริยาเริ่มต้นของฉันเช่นเดียวกับส่วนที่ยกมาในคำตอบที่ยอมรับ แต่ข้อมูลเพิ่มเติม 'ตราบใดที่คุณไม่ได้เลือกข้อความใด ๆ สิ่งนี้จะทำซ้ำเส้นเคอร์เซอร์สิ้นสุด ... ' ทำให้มันเป็นอุดมคติ ทางออกในกรณีของฉัน
RyanfaeScotland

74

Ctrl+ C+ Vใช้ได้กับฉันใน VS2012 โดยไม่มีส่วนขยาย


ทำงานได้กับ VS2008 ด้วย!
teodron

1
ทำงานใน VS2017
Kyle Delaney

8
ต้องการโซลูชันที่ไม่มีคลิปบอร์ดเขียนทับ
Pierre de LESPINAY

เพียงเพื่อเติมเต็มคำตอบคุณจะต้องกดชุดค่าผสมเต็มรูปแบบสำหรับการทำซ้ำครั้งแรก จากอันที่สองเพียงกด Ctrl + V ซ้ำหลาย ๆ ครั้งตามที่คุณต้องการเพื่อทำการเรพลิเคทบรรทัดต่อไป
Luty

34

Ctrl+ Dใช้ได้กับฉันใน VS2012 กับ Resharper มันเป็นปุ่มลัดของ Resharper


11
ไม่มันไม่เพียงรู้ว่าหลังจากโพสต์ แต่มันเป็นทางลัด Resharper และถ้ามีผู้ติดตั้ง resharper ใหม่สิ่งนี้จะช่วยได้
เลื่อย

1
ฉันมี resharper และไม่รู้ทางลัดนั้น! ขอบคุณ
DanO

นี่คือทางลัดเริ่มต้นหากคุณใช้ชุดรูปแบบแป้นพิมพ์ "Resharper 2.x หรือ IntelliJ IDEA" ของ Resharper Resharper ให้คุณเลือกการจับคู่แป้นพิมพ์ระหว่างการติดตั้ง รูปแบบแป้นพิมพ์ "Visual Studio" เป็นหนึ่งในตัวเลือก หากคุณเลือกชุดรูปแบบแป้นพิมพ์ "Visual Studio" Ctrl + D จะถูกแมปกับสิ่งอื่น
GeoMac

นั่นเป็นคำตอบของคำถาม ReSharper
แอนโทนีบูธ

โปรดทราบว่าสิ่งนี้ยังใช้งานได้เมื่อเลือกหลายบรรทัดเช่นคุณสามารถทำซ้ำรหัสทั้งหมดไม่เพียงหนึ่งบรรทัด ข้อเสียของหลักสูตรการเป็น resharper นั้นไม่ฟรี (แต่ดูเหมือนว่าโลกของ. Net จะคุ้นเคยกับมันมากกว่าโลก Java ที่ฉันมา)
Amos M. Carpenter

31

ใน Visual Studio 2013 คุณสามารถใช้Ctrl+ C+V


2
ดีใจที่ฉันเดินลงไป นี่คือสิ่งที่ฉันต้องการ
Daryl

ทำงานกับ VS Code Linux ด้วย
ฮัน

4
ต้องการวิธีแก้ปัญหาโดยไม่เขียนทับคลิปบอร์ด
Pierre de LESPINAY

2
จะดีถ้าไม่ได้แทนที่คลิปบอร์ด
mikus

23

นี่คือมาโครที่อิงจากลิงก์ที่โพสต์โดย Wael แต่ได้รับการปรับปรุงในพื้นที่ต่อไปนี้:

  • สั้นกว่าเล็กน้อย
  • เร็วขึ้นเล็กน้อย
  • ความคิดเห็น :)
  • ทำงานสำหรับบรรทัดที่ขึ้นต้นด้วย "///"
  • สามารถยกเลิกได้ด้วยการเลิกทำอันเดียว
Imports System
Imports EnvDTE
Imports EnvDTE80

Public Module Module1

    Sub DuplicateLine()
        Dim sel As TextSelection = DTE.ActiveDocument.Selection
        sel.StartOfLine(0) '' move to start
        sel.EndOfLine(True) '' select to end
        Dim line As String = sel.Text
        sel.EndOfLine(False) '' move to end
        sel.Insert(ControlChars.NewLine + line, vsInsertFlags.vsInsertFlagsCollapseToEnd)
    End Sub

End Module

1
ใช่อันนี้ใช้งานได้จริงคำตอบที่ได้รับการยอมรับคือการคัดลอกสิ่งต่าง ๆ ลงในบรรทัดใหม่ เยี่ยมมากขอบคุณ!
zuallauz

ฉันไม่พบตัวเลือก Macros ใน VS 2010 Express สามารถใช้งานได้หรือไม่
Nenotlep

1
หลังจากกุมภาพันธ์ 2014 แมโครถูกปิดใช้งานด้วยเหตุผลด้านความปลอดภัย เลื่อนลงและดูคำตอบของ MasterHD สำหรับวิธีแก้ปัญหาเพื่อรับวิธีของ Mark เพื่อให้ทำงานได้แม้หลังจากการปรับปรุงความปลอดภัย
MasterHD

11

หากคุณชอบ eclipse style line (หรือ block) ทำซ้ำโดยใช้CTRL+ ALT+ UPหรือCTRL+ UP+ DOWNด้านล่างฉันโพสต์มาโครเพื่อจุดประสงค์นี้:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module DuplicateLineModule
    Sub DuplicateLineDown()
        Dim selection As TextSelection = DTE.ActiveDocument.Selection
        Dim lineNumber As Integer
        Dim line As String

        If selection.IsEmpty Then
            selection.StartOfLine(0)
            selection.EndOfLine(True)
        Else
            Dim top As Integer = selection.TopLine
            Dim bottom As Integer = selection.BottomLine

            selection.MoveToDisplayColumn(top, 0)
            selection.StartOfLine(0)

            selection.MoveToDisplayColumn(bottom, 0, True)
            selection.EndOfLine(True)
        End If

        lineNumber = selection.TopLine
        line = selection.Text

        selection.MoveToDisplayColumn(selection.BottomLine, 0)
        selection.EndOfLine()
        selection.Insert(vbNewLine & line)
    End Sub
    Sub DuplicateLineUp()
        Dim selection As TextSelection = DTE.ActiveDocument.Selection
        Dim lineNumber As Integer
        Dim line As String

        If selection.IsEmpty Then
            selection.StartOfLine(0)
            selection.EndOfLine(True)
        Else
            Dim top As Integer = selection.TopLine
            Dim bottom As Integer = selection.BottomLine

            selection.MoveToDisplayColumn(top, 0)
            selection.StartOfLine(0)

            selection.MoveToDisplayColumn(bottom, 0, True)
            selection.EndOfLine(True)
        End If

        lineNumber = selection.BottomLine
        line = selection.Text

        selection.MoveToDisplayColumn(selection.BottomLine, 0)
        selection.Insert(vbNewLine & line)
        selection.MoveToDisplayColumn(lineNumber, 0)
    End Sub
End Module

10

เหตุใดจึงต้องใช้วิธีการที่ดึงออกมานาน ๆ ใช้เวลาน้อยกว่าหนึ่งนาทีในการดาวน์โหลดและติดตั้งส่วนขยายจาก Microsoft หน้าบอกว่ามันจะผูกไว้กับALT+ Dโดยค่าเริ่มต้น แต่สำหรับฉันมันถูกผูกไว้กับCTRL+ Dโดยอัตโนมัติใน Visual Studio Community 2015 โดยไม่มีการเปลี่ยนแปลงใด ๆ

นี่คือลิงค์สำหรับดาวน์โหลดส่วนขยายจาก Microsoft.com


คำถามเกี่ยวกับ Visual Studio 2008 ไม่ใช่ 2015 :)
sarcom

ควรสังเกตว่าส่วนขยายนี้ซ้ำกับเส้นที่เลือกไม่ใช่ส่วนที่เลือก แต่ก็ยังมีประโยชน์
Aneves

อันนี้มีประโยชน์มากที่สุดสำหรับฉันเพราะฉันต้องการโซลูชันที่ไม่ได้แทนที่สิ่งที่ฉันมีในคลิปบอร์ด ส่วนขยายนี้เป็นสิ่งที่ฉันกำลังมองหา และตามผู้แต่งส่วนขยายปัจจุบันสามารถใช้งานได้กับ Visual Studio 2012, 2013, 2015 และ 2017
Mark

8

ในรหัสสตูดิโอภาพ ( WebMatrix ):

คัดลอกเส้นลง: Shift+ Alt+down

คัดลอกเส้นขึ้น: Shift+ Alt+up

ลบเส้น: Ctrl+ Shift+k


1
นี่คือคำตอบที่ดีที่สุด มันจะช่วยให้คุณสามารถทำซ้ำบล็อกเต็มของรหัสหากคุณต้องการเพียงแค่เลือกหลายบรรทัด ทดสอบใน Visual Studio Code 1.7.2
Victor Barrantes

7

ในขณะที่ฉันรู้ว่านี่ไม่ใช่แป้นพิมพ์ลัดฉันคิดว่าฉันจะเพิ่มสิ่งนี้เนื่องจากมันไม่ต้องการการใช้คลิปบอร์ดและอาจช่วยบางคนได้

เน้นแถวที่คุณต้องการทำซ้ำ กดควบคุมคลิกเมาส์ที่ข้อความที่ไฮไลต์แล้วลากไปยังตำแหน่งที่คุณต้องการ มันจะทำซ้ำข้อความที่เน้น


บรรลุผลลัพธ์เดียวกันกับการทำงานในตัว! และคำถามที่ถามทางลัดเท่านั้น - ไม่จำเป็นต้องเป็นแป้นพิมพ์ลัด! ถึงกระนั้นมันก็ยอดเยี่ยมกว่านี้ถ้าหากเมาส์ไม่ได้เกี่ยวข้อง
DanO

7

เนื่องจากฉันไม่สามารถใช้แมโครใน Visual Studio 2013 ของฉันฉันพบปลั๊กอิน Visual Studio (ฉันใช้ในปี 2012 และ 2013) การเลือกซ้ำทำซ้ำการเลือกและทั้งบรรทัด - พวกเขาจะต้องเลือกบางส่วนเท่านั้น ทางลัดมาตรฐานคือ+ALTD


5

ฉันไม่รู้ว่ามีอยู่ใน Visual Studio 2008 แต่ใน Visual Studio 2010+ คุณสามารถทำได้โดย:

อย่าเลือกอะไรเลยจากนั้นกดCtrl+ Cแล้ว (โดยไม่ทำอะไรเลย) Ctrl+V


5

ใน Visual Studio 2017 และอื่น ๆ ที่อาจจะรุ่นไม่จำเป็นต้องแมโครหรือขยาย ,

  1. ไปที่ Tools > Options > Environment > Keyboards
  2. ภายใต้การShow commands containing:เขียนEdit.Duplicate
  3. วางเคอร์เซอร์ไปที่Press shortcut keys:และกดCtrl+ DและคลิกAssignปุ่ม
  4. คลิกOKเพื่อบันทึกแป้นพิมพ์ลัดใหม่ของคุณ

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


4

ฉันใช้มาโครที่ Wael โพสต์แล้ว: ทำซ้ำคำสั่ง line สำหรับ Visual Studioแต่มันหยุดทำงานเมื่อสัปดาห์ที่แล้วฉันสันนิษฐานว่าเป็นเพราะ Windows Update และฉันก็ถูกต้องตั้งแต่เดือนกุมภาพันธ์ 2014 มาโครถูกปิดการใช้งานใน VS2010 (และเห็นได้ชัดว่าปี 2008)

เพื่อแก้ไขปัญหานี้คุณอาจจะต้องถอนการติดตั้งโปรแกรมปรับปรุงความปลอดภัยหรือเพิ่มหนึ่งบรรทัดของรหัสลงใน config ไฟล์ที่แสดงที่นี่

บนพา ธ ดีฟอลต์ของเครื่อง Windows 64 บิตไปที่ไฟล์เหล่านี้คือ:

  • C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv10.exe.config
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config

    ...
    <configuration>
        <runtime>
            <AllowDComReflection enabled="true"/>
            ...
    

    ภาพหน้าจอของบรรณาธิการ

คุณต้องเรียกใช้โปรแกรมแก้ไขข้อความด้วยสิทธิ์ของผู้ดูแลระบบมิฉะนั้นมันจะไม่ทำงาน! หวังว่านี่จะช่วยให้คนอื่น ๆ ที่มีฟังก์ชั่นมาโครของพวกเขาถูกดึงออกมาจากด้านล่าง


4

สำหรับVisual Studio 2012, 2013, 2015, 2017ไปตามลิงค์และดาวน์โหลดส่วนขยาย

https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection

ตอนนี้ไปที่เครื่องมือ> ตัวเลือก> แป้นพิมพ์และพิมพ์ "ซ้ำ" ในช่องค้นหา (สตริงคำสั่งแบบเต็มคือ "Edit.DuplicateSelection") ที่นี่คุณสามารถผูกมันไว้กับทางลัดใด ๆ ในแบบเดียวกับที่คุณทำกับคำสั่งอื่น




3

สำหรับผู้ที่ยังคงดูคำถามนี้ใน Visual Studio post-2008 มีการเพิ่ม Edit.Duplicate จริง:

  • CTRL+ E,V
  • CTRL+ D(VS 2017 15.6+)

2

Ctrl+ Dเป็นทางลัดใหม่แนะนำใน VS 2017 v15.6 ที่ดูเหมือนว่าจะทำในสิ่งที่แน่นอนที่Ctrl+ E,V

Ctrl + D จะทำซ้ำบรรทัดที่เคอร์เซอร์อยู่และแทรกลงใต้บรรทัดที่อยู่ในโฟกัส หากคุณต้องการทำซ้ำชุดรหัสเฉพาะให้เลือกส่วนของรหัสที่คุณต้องการทำซ้ำก่อนที่จะเรียกใช้คำสั่งรหัสที่ซ้ำกัน

มันจะไม่ส่งผลกระทบต่อคลิปบอร์ดของคุณ

แหล่ง


1
การติดตั้งใหม่ของ VS2017 และ VS2019: Ctrl + D ไม่ใช่ค่าเริ่มต้นที่แมปกับ Editor.DuplicateLine ...
thomasgalliker

2

สำหรับ Visual Studio รหัส 2019 :

แก้ไขแป้นพิมพ์ลัดเมนูด้วย: ctrl+kและctrl+s

แก้ไข "คัดลอกบรรทัดลง" ( Shift+ Alt+ DownArrow) ไปยังทางลัดของคุณเอง

คุณสามารถค้นหาได้ด้วย ID คำสั่ง: editor.action.copyLinesDownAction

สำหรับฉันมันctrl+d


1

http://www.jetbrains.com/resharper/

เรื่องราวของฉัน:เริ่มทำงานใน บริษัท ใหม่ไม่เคยใช้ Visual Studio มาก่อน หนึ่งในสิ่งแรก - วิธีการทำสำเนาบรรทัด หลังจากตั้งค่าแมโครReSharperบอกฉัน: คุณต้องการแทนที่ทางลัดของฉันซึ่งก็คือ: "ข้อความที่ซ้ำกัน" :)


resharper - ช้ามาก
Horev Ivan

1

ใน Visual Studio 2010 คุณคัดลอกทั้งบรรทัดเคอร์เซอร์เปิดด้วยCTRL+ INSERTจากนั้นคุณสามารถใช้Ctrl+ VหรือSHIFT+ INSERTเพื่อวาง



1

คำสั่งที่คุณต้องการคือEdit.Duplicate มันเป็นแมปไป,CtrlE CtrlVสิ่งนี้จะไม่เขียนทับคลิปบอร์ดของคุณ


1

ฉันใช้ลิงค์แอปพลิเคชัน: AutoHotkeyพร้อมรหัสด้านล่างที่บันทึกไว้ในCommentDuplikateSaveClipboard.ahkไฟล์ คุณสามารถแก้ไข / ลบทางลัดได้ง่าย
ฉันมีความเชื่อมโยงไปยังไฟล์นี้"Shortcut to CommentDuplikateSaveClipboard.ahk"ในAutostartหน้าต่าง
สคริปต์นี้ป้องกันคลิปบอร์ดของคุณ
หากคุณสงสัยมากขึ้นคุณจะต้องเพิ่มทางลัดไปยังสคริปต์นี้ / เปิดใช้งาน
บางครั้งผมใช้ที่น่าประทับใจมากMulti Clipboardสคริปต์เพื่อจับง่ายกับหลาย ๆclipsที่บันทึกไว้บนดิสก์และใช้กับCTRL+ C, X, Vคัดลอก, วาง, ตัด, ถัดไปก่อนหน้าลบนี้ลบทั้งหมด

;CommentDuplikateSaveClipboard.ahk

!c:: ; Alt+C === Duplicate Line
^d:: ; Ctrl+D
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{HOME}{SHIFTUP}{CTRLDOWN}c{CTRLUP}{END}{ENTER}{CTRLDOWN}v{CTRLUP}{HOME}
Clipboard := ClipSaved
ClipSaved =
return

!x:: ; Alt+X === Comment Duplicate Line
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{HOME}{SHIFTUP}{CTRLDOWN}c{CTRLUP}{LEFT}//{END}{ENTER}{CTRLDOWN}v{CTRLUP}{HOME}
Clipboard := ClipSaved
ClipSaved =
return

!z:: ; Alt+Z === Del uncomment  Line
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{UP}{END}{SHIFTUP}{DEL}{HOME}{DEL}{DEL}
Clipboard := ClipSaved
ClipSaved =
return

!d:: ; Alt+D === Delete line
Send, {END}{SHIFTDOWN}{UP}{END}{SHIFTUP}{DEL}
return

!s:: ; Alt+S === Swap lines
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{UP}{END}{SHIFTUP}{CTRLDOWN}x{CTRLUP}{UP}{END}{CTRLDOWN}v{CTRLUP}{HOME}
Clipboard := ClipSaved
ClipSaved =
return

!a:: ; Alt+A === Comment this line, uncomment above
Send, {END}{HOME}//{UP}{HOME}{DEL}{DEL}
return

0

ไม่ใช่คำตอบเพียงแค่การเพิ่มที่มีประโยชน์: ในฐานะของ freebie ฉันเพิ่งคิดค้น (ดี ... เอ๊ะ ... ปรับโค้ดที่โพสต์โดย Lolo) มาโคร RemoveLineOrBlock สนุก!

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics

Public Module RemoveLineOrBlock

    Sub RemoveLineOrBlock()
        Dim selection As TextSelection = DTE.ActiveDocument.Selection
        Dim lineNumber As Integer
        Dim line As String

        If selection.IsEmpty Then
            selection.StartOfLine(0)
            selection.EndOfLine(True)
        Else
            Dim top As Integer = selection.TopLine
            Dim bottom As Integer = selection.BottomLine

            selection.MoveToDisplayColumn(top, 0)
            selection.StartOfLine(0)

            selection.MoveToDisplayColumn(bottom, 0, True)
            selection.EndOfLine(True)
        End If

        selection.LineDown(True)
        selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn,True)

        selection.Delete()

        selection.MoveToDisplayColumn(selection.BottomLine, 0)
        selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText)

    End Sub

End Module

0

ในVS2019และในVS2017คุณสามารถเลือกเครื่องมือ -> ตัวเลือก -> แป้นพิมพ์และคุณสามารถเลือกตัวเลือกResharper (Visual Studio)แบบหล่นลงและคุณจะได้รับการทำแผนที่เช่นถ้าคุณใช้Resharperในกรณีนี้Ctrl+ Dจะทำเคล็ดลับในการทำซ้ำบรรทัด อย่างไรก็ตามตามเอกสารนี้ควรอยู่นอกเกตในVisual Studio 2017 เวอร์ชัน 15.8หรือสูงกว่า


-3

สำหรับ visual studio 2010 ลองใช้คำสั่งเหล่านี้เพื่อทำสำเนาบรรทัดอย่างรวดเร็ว (ใช้คลิปบอร์ด):

  • คลิกที่บรรทัดที่คุณต้องการคัดลอก Ctrl+ Cจะคัดลอกบรรทัดนั้น

  • จากนั้นกดCtrl+ Shift+Enterเพื่อแทรกว่างด้านล่างจุดแทรก

    (หรือใช้Ctrl+ Enterเพื่อแทรกบรรทัดว่างด้านบนจุดแทรก)

  • จากนั้นใช้Ctrl+ Vเพื่อวางบรรทัด


1
คำแนะนำทีละขั้นตอนที่ดีมากสำหรับการคัดลอกและวาง แต่ OP กำลังมองหาวิธีการทำสำเนาบรรทัด ...
ᴍᴀᴛᴛʙᴀᴋᴇʀ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.