Delete Matching Braces in Visual Studio

后端 未结 3 563
刺人心
刺人心 2021-01-12 04:15

In Visual Studio I can jump from/to opening/closing brace with the Control+] shortcut.

Is there a shortcut that will allow me to delete both braces at o

3条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-01-12 04:46

    It's not quite as simple as JaredPar suggested but I'm no Macro expert either.

    This works for (), {} and []

    Sub DeleteMatchingBrace()
        Dim sel As TextSelection = DTE.ActiveDocument.Selection
        Dim ap As VirtualPoint = sel.ActivePoint
    
        If (sel.Text() <> "") Then Exit Sub
        ' reposition
        DTE.ExecuteCommand("Edit.GoToBrace") : DTE.ExecuteCommand("Edit.GoToBrace") 
    
        If (ap.DisplayColumn <= ap.LineLength) Then sel.CharRight(True)
    
        Dim c As String = sel.Text
        Dim isRight As Boolean = False
        If (c <> "(" And c <> "[" And c <> "{") Then
            sel.CharLeft(True, 1 + IIf(c = "", 0, 1))
            c = sel.Text
            sel.CharRight()
            If (c <> ")" And c <> "]" And c <> "}") Then Exit Sub
            isRight = True
        End If
    
        Dim line = ap.Line
        Dim pos = ap.DisplayColumn
        DTE.ExecuteCommand("Edit.GoToBrace")
        If (isRight) Then sel.CharRight(True) Else sel.CharLeft(True)
    
        sel.Text = ""
        If (isRight And line = ap.Line) Then pos = pos - 1
        sel.MoveToDisplayColumn(line, pos)
        sel.CharLeft(True)
        sel.Text = ""
    End Sub
    

    Then add a shortcut to this macro in VS.

提交回复
热议问题