2012-09-27 3 views
0

я покажу на примере, что я хочу:Как удалить блок, но сохранить содержимое в Visual Studio?

оригинальная состояние:

using (var myobject = new DisposableObject()) 
{ 
    //some code that no longer use myobject 
    int x = 5; 
    int y = x+5; 
} 

желаемое состояние:

//some code that no longer use myobject 
    int x = 5; 
    int y = x+5; 

Я хотел бы добиться такого изменения с комбинацией клавиатуры или ReSharper или макрос. Таким образом, не удаляйте оба фигурных скобки и линию использования вручную. Это возможно?

ответ

0

Ни одна команда, но это будет работать (нужно Resharper):

  • удалить "используя" линию (сдвиг + дель)
  • поместить курсор на { и нажмите alt + введите,
  • выберите «удалить брекеты».
+0

Это Великий :). shift + del, end, alt + enter, enter. Невозможно написать макрос на этих 4 шагах? –

0

Этот макрос также работает, если фигурные скобки и используя блок находятся в разных строках, просто нужно ярлык добавить:

Sub deleteusingblock() 
    DTE.ExecuteCommand("Edit.LineDelete") 
    DTE.ActiveDocument.Selection.EndOfLine() 
    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 

(источник: Крисом ответ: Delete Matching Braces in Visual Studio)

Смежные вопросы