2012-03-27 29 views
6

En Visual Studio puedo saltar desde/hacia la llave de apertura/cierre con el atajo Control+].Eliminar llaves coincidentes en Visual Studio

¿Hay un atajo que me permita eliminar ambas llaves a la vez (quizás con una macro/extensión)?

p. Ej.

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

Cuando estoy en la primera llave de apertura me gustaría eliminarlo y su corsé a juego para conseguir

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

al igual que eclipse – pylover

Respuesta

2

No es tan simple como sugirió JaredPar pero no soy Mac ro experto tampoco.

Esto funciona para(), {} y []

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

Hacer una macro para presionar Ctrl +] dos veces y luego la tecla de retroceso, entonces + menos Ctrl y una eliminación. Ctrl + + mueve el cursor hacia atrás en el tiempo.

+0

Suena bien pero no pude hacer que esto funcione - ctrl + menos siempre salta a otra línea. ¿Debo cambiar mis opciones de VS? – laktak

+0

Oh, podría ser un acceso directo de Resharper ... Vaya a Herramienta> Opciones> Entorno> Teclado: busque 'Ver.Navegar hacia atrás' y asegúrese de que esté configurado como Ctrl + - (Global). – SimpleVar

3

No hay una forma inherente de hacer esto con Visual Studio. Debería implementar una macro para esto.

Si elige la ruta de macro, querrá familiarizarse con el comando Edit.GoToBrace. Este es el comando que lo saltará de la corriente al corsé correspondiente. Tenga en cuenta que en realidad le arrojará después del corsé correspondiente, por lo que es posible que necesite mirar hacia atrás un carácter para encontrar el elemento que desea eliminar.

La mejor manera de implementar esto como una macro es

  • Guardar la posición del símbolo actual
  • Ejecutar Edit.GoToBrace
  • Eliminar la abrazadera a la izquierda del cursor
  • Eliminar la abrazadera en la posición inicial original
+0

gracias, esperaba una macro acabada :) pero la he juntado – laktak

Cuestiones relacionadas