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

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

void foo()_

к

void foo()
{
    _
}

Это встроенная функция?

Ответов (5)

Решение

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

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

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

Я только что создал один на основе @ 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

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

В сети есть масса информации по их созданию:

Джефф сам написал здесь

Есть гугл! Я использую их МНОГО! : D

Также обратите внимание на визуальный помощник .

Инструменты выглядят красиво (особенно Resharper, но за 200-350 долларов ой!), Но в итоге я просто записал макрос и назначил его 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

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