2012-03-27 15 views
6

In Visual Studio posso saltare da/a apertura/chiusura con il collegamento Control+].Elimina parentesi graffe corrispondenti in Visual Studio

C'è una scorciatoia che mi consenta di eliminare entrambe le parentesi contemporaneamente (magari con una macro/estensione)?

ad es.

foo = (1 + bar() + 2); 

Quando sono sulla prima parentesi graffa di apertura vorrei eliminarlo e la sua parentesi graffa corrispondente per ottenere

foo = 1 + bar() + 2; 
+0

proprio come l'eclissi – pylover

risposta

2

Non è semplice come suggerito da JaredPar ma non sono Mac esperto di ro.

Questo funziona per(), {} e []

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.

2

Fai una macro di premere Ctrl +] due volte e poi backspace, e poi Ctrl + minus e una cancellazione. Il Ctrl + meno sposta il cursore indietro nel tempo.

+0

Suoni buoni ma non ho potuto farlo funzionare - Ctrl + Meno salta sempre su un'altra linea. Devo cambiare le mie opzioni VS? – laktak

+0

Oh potrebbe essere una scorciatoia di ricerca ... Vai a Strumento> Opzioni> Ambiente> Tastiera: cerca "Visualizza.NavigateBackward" e assicurati che sia impostato su Ctrl + - (Globale). – SimpleVar

3

Non c'è un modo intrinseco per farlo con Visual Studio. Dovresti implementare una macro per questo.

Se si sceglie il percorso macro, è necessario acquisire familiarità con il comando Edit.GoToBrace. Questo è il comando che ti salterà dalla corrente alla parentesi corrispondente. Nota che in realtà ti scaricherà dopo la parentesi corrispondente, quindi potresti dover guardare indietro di un personaggio per trovare l'elemento da eliminare.

Il modo migliore per implementare questo come una macro è quello di

  • Salvare la posizione del cursore corrente
  • Execute Edit.GoToBrace
  • Eliminare il tutore alla sinistra del punto di inserimento
  • Eliminare il brace a la posizione originale del cursore
+0

grazie, speravo in una macro finita :) ma l'ho messa insieme – laktak

Problemi correlati