0

私が欲しい例を通して示します:

元の状態:

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;

キーボードの組み合わせ、リシャープ コマンド、またはマクロを使用して、この変更を実現したいと考えています。したがって、中括弧と使用行の両方を手動で削除することはできません。これは可能ですか?

4

2 に答える 2

0

単一のコマンドではありませんが、これは機能します(Resharperが必要です):

  • 「使用中」の行を削除します(shift+ del
  • にカーソルを置き、{+をalt押しenterます。
  • 「中括弧を削除」を選択します。
于 2012-09-27T07:55:04.427 に答える
0

このマクロは、ブレースと using ブロックが別の行にある場合にも機能します。ショートカットを追加する必要があるだけです。

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

(ソース: クリスの回答: Visual Studio で一致する中括弧を削除する)

于 2012-09-27T08:30:26.360 に答える