Как заставить Visual Studio автоматически создавать фигурные скобки для функционального блока?

Я мог бы поклясться, что видел, как люди печатали заголовки функций, а затем ударяли какую-то комбинацию клавиш, чтобы автоматически создавать фигурные скобки и вставлять курсор между ними так:

void foo()_

к

void foo()
{
    _
}

Является ли это встроенной функцией?

Ответ 1

Отъезд Resharper - это дополнение Visual Studio с этой функцией, среди многих других полезных советов.

Также см. С# Completer, еще одно дополнение.

Если вы хотите просмотреть свой собственный, эту статью. Безумно, что нужно это делать, однако.

Ответ 2

Инструменты выглядят красиво (особенно Resharper, но в $200-350 ouch!), но я закончил тем, что просто записал макрос и назначил его ctrl + alt + [

Макро вышло вот так:

Sub FunctionBraces()
    DTE.ActiveDocument.Selection.NewLine
    DTE.ActiveDocument.Selection.Text = "{}"
    DTE.ActiveDocument.Selection.CharLeft
    DTE.ActiveDocument.Selection.NewLine(2)
    DTE.ActiveDocument.Selection.LineUp
    DTE.ActiveDocument.Selection.Indent
End Sub

Изменить: я использовал макрорекордер, чтобы сделать это, и это было не так уж плохо.

Ответ 3

Это может быть достигнуто с помощью фрагментов кода, некоторые из них уже встроены (попробуйте ввести "svm" и нажмите TAB-TAB).

Там есть множество информации о сети:

Джефф сделал свое сообщение здесь

У вас есть Google! Я использую их ВСЕ!: D

Ответ 5

Я только что создал один, основанный на @Luke выше. В этом случае вы хотите нажать Enter, а затем нажмите комбинацию клавиш и вставьте:

if ()
{

}
else
{

}

И он помещает курсор в скобку с помощью оператора if.

Sub IfStatement()
    DTE.ActiveDocument.Selection.Text = "if ()"
    DTE.ActiveDocument.Selection.NewLine()
    DTE.ActiveDocument.Selection.Text = "{"
    DTE.ActiveDocument.Selection.NewLine(2)
    DTE.ActiveDocument.Selection.Text = "}"
    DTE.ActiveDocument.Selection.NewLine()
    DTE.ActiveDocument.Selection.Text = "else"
    DTE.ActiveDocument.Selection.NewLine(2)
    DTE.ActiveDocument.Selection.Text = "{"
    DTE.ActiveDocument.Selection.NewLine(2)
    DTE.ActiveDocument.Selection.Text = "}"
    DTE.ActiveDocument.Selection.LineUp(False, 7)
    DTE.ActiveDocument.Selection.EndOfLine()
    DTE.ActiveDocument.Selection.CharLeft(3)
End Sub