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

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

void foo()_

до

void foo()
{
    _
}

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

Ответы [ 5 ]

6 голосов
/ 13 августа 2008

Инструменты выглядят хорошо (особенно 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

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

5 голосов
/ 13 августа 2008

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

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

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

2 голосов
/ 13 августа 2008

Взгляните также на визуальную помощь .

2 голосов
/ 13 августа 2008

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

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

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

Есть гугл! Я использую их много! : D

0 голосов
/ 05 сентября 2012

Я только что создал один на основе @ Люка выше. На этот раз вы хотите нажать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...