Как заставить Visual Studio автоматически генерировать фигурные скобки для функционального блока?
-
08-06-2019 - |
Вопрос
Могу поклясться, что видел, как люди вводили заголовки функций, а затем нажимали какую-то комбинацию клавиш для автоматического создания функциональных фигурных скобок и вставки курсора между ними вот так:
void foo()_
к
void foo()
{
_
}
Это встроенная функция?
Решение
Проверить Решарпер - это надстройка Visual Studio с этой функцией, среди многих других средств разработки.
Также см C# Полное завершение, еще одно дополнение.
Если вы хотите свернуть свой собственный, проверьте Эта статья.Хотя безумие, что нужно это делать.
Другие советы
Инструменты выглядят неплохо (особенно 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
Редактировать:Я использовал макрорекордер, чтобы сделать это, и это было не так уж плохо.
Этого можно добиться, используя фрагменты кода, некоторые из которых уже встроены (попробуйте ввести «svm» и нажать TAB-TAB).
В сети полно информации по их созданию:
Джефф сам разместил здесь пост
Имейте Гугл!Я использую их МНОГО!:D
Взгляни на визуальная помощь также.
Я только что создал один на основе приведенного выше @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