Перейти к соответствия скобки в Visual Studio?

Есть ли способ в Visual Studio 2008 перейти от закрывающей скобки к открывающей скобке? Я нашел довольно много информации о выделении фигурной скобки, но ничего о перемещении курсора на нее.

(Версия этого вопроса для VB.NET: сочетание клавиш для перехода между "If / End If")

29 ответов

Решение

Я нашел это для вас: переход между скобками в Visual Studio

Поместите курсор перед или после скобки (ваш выбор), а затем нажмите CTRL + ]. Работает с фигурными или круглыми скобками. Отныне вам не нужно играть Где Уолдо? найти эту скобу.

Я использую Visual Studio 2008, и вы можете настроить, какой вы хотите этот ярлык.

Нажмите меню Сервис -> Параметры -> Среда -> Клавиатура. Тогда ищите Edit.GotoBrace.

Это скажет вам, какая комбинация клавиш в настоящее время назначена для этого. Я думаю, что вы можете изменить это, если хотите, но это полезно, если Ctrl + ] не работает.

Используйте CTRL + ] для переключения между ними. При использовании курсора поместите курсор на одну из фигурных скобок.

Примечание: это также работает для соответствия #if / #elif / #endif. Каретка должна быть на #.

Если по какой-то причине это НЕ работает для вас, возможно, что-то испортило ваши привязки клавиатуры (у меня это не сработало). Вы можете включить привязку достаточно легко - хотя бы так я и думал:

Я попробовал эту процедуру:

  • Зайдите в меню Инструменты -> Параметры -> Среда -> Клавиатура
  • Выделите или найдите команду Edit.GotoBrace
  • Назначьте нужный ярлык (мой был пуст, поэтому я положил в CTRL + ])
  • Обязательно нажмите кнопку "Назначить"

Я попробовал это, и это все еще не работало. Я перезапустил Visual Studio, и он все еще не работал - ну, он работал ТОЛЬКО для файлов.cs, но мне нужно, чтобы он работал для файлов.vb и текстовых файлов, и... ну ВСЕ файлы!

На моей французской клавиатуре это CTRL + ^.

На немецкой клавиатуре это Ctrl + ´.

На испанской клавиатуре это CTRL + ¿ (или CTRL + ¡).

На турецкой клавиатуре это Ctrl + ü.

И Ctrl + Shift + ] выделит весь текст.

На моей датской клавиатуре это CTRL + Å.

Для полноты на шведской клавиатуре это CTRL + å.

Также, я думаю, логично, но стоит упомянуть CTRL + shift + å (для заглавной буквы Å), выбрать все внутри фигурных скобок и перейти к соответствующей.

На моей итальянской клавиатуре это CTRL + ^.

На моей португальской клавиатуре и SO с EN VS это CTRL + " для перехода к соответствующей скобке и CTRL + SHIFT + ", если вы хотите выбрать внутренний код.

На моей клавиатуре pt-BR (бразильский португальский) это на самом деле CTRL + [.

На моей словенской клавиатуре это ALT + Đ

На Mac используйте команду+shift+\.

Источник: комментарий к этому ответу: /questions/4304543/perejti-k-zakryivayuschej-skobke-v-kode-visual-studio/4304546#4304546. Протестировано в Visual Studio Code версии 1.10.2.

Для кода Visual Studio (как видно из их документации) используйте Ctrl+Shift+\.

Настройки можно найти в:

Файл / Настройки / Сочетание клавиш

Я использую Visual Studio Code 1.8.0 . Примечание. Код Visual Studio может работать по-разному для международных клавиатур (как видно из этого ответа на немецком языке)

Надеюсь, это кому-нибудь поможет.

Перейдите в Инструменты> Параметры> Среда> Шрифты и цвета, выберите "Соответствие скобок (прямоугольник)" и измените "Фон элемента", например, на Желтый. Это сработало для скобок C# () {} и [].

На моей голландской (бельгийской) клавиатуре это CTRL + ^.

Подробности, которые могут принести пользу всем (Linux/Win/Mac)

Команда в меню / редакторе сочетаний клавиш editor.action.jumpToBracket там вы можете установить все, что захотите. Существует также один называется editor.action.selectToBracket который не имеет ярлыка по умолчанию (по крайней мере, на Mac).

И т.п.

На Mac editor.action.jumpToBracket начинается как Cmd+Shift+\, и я изменил его на Ctrl+], чтобы соответствовать тому, что здесь говорят другие. Я сделал это в надежде, что смогу использовать Ctrl+Shift+], чтобы "Расширить выделение до соответствующей скобки". Это то, что привело меня к раскрытию деталей выше. Я поставил editor.action.selectToBracket Ctrl+Shift+] и получил именно то поведение, которое я хотел.

На венгерской клавиатуре это Ctrl + ú.

Немного актуально, но для тегов HTML: (поскольку встроенного решения не существует, Ctrl + J не работает для тегов HTML:)

Вот ответ в виде макроса, который я построил, который делает это (переключение), включая go to focus:

Вот демо:

А вот и код. Наслаждайтесь!

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Imports System.Windows.Forms

Public Module Module2
    Sub beginToEnd()

        'Place the cursor somewhere in the beginning tag, run the macro, to select from beginning to end tag

        DTE.ActiveDocument.Selection.SelectLine()
        Dim objSel As TextSelection = DTE.ActiveDocument.Selection
        Dim topPoint As TextPoint = objSel.TopPoint
        Dim lTopLine As Long = topPoint.Line
        objSel.GotoLine(lTopLine, False)
        '  DTE.ActiveDocument.Selection.StartOfLine()
        DTE.ActiveDocument.Selection.SelectLine()
        Dim line1 As String = DTE.ActiveDocument.Selection.Text()

        If InStr(line1, "/") Then

            ' MsgBox(line1)
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
            DTE.ActiveDocument.Selection.EndOfLine()
            DTE.ActiveDocument.Selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText, True)
            objSel.GotoLine(lTopLine, False)
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
        Else
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
            DTE.ActiveDocument.Selection.EndOfLine(False)
            DTE.ExecuteCommand("Edit.ToggleOutliningExpansion")
        End If

        DTE.ActiveDocument.Selection.SelectLine()
        Dim line2 As String = DTE.ActiveDocument.Selection.Text()
        Dim objSel3 As TextSelection = DTE.ActiveDocument.Selection
        Dim topPoint3 As TextPoint = objSel3.TopPoint
        Dim lTopLine3 As Long = topPoint3.Line
        objSel.GotoLine(lTopLine3, False)
        DTE.ActiveDocument.Selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText, False)
    End Sub
End Module

В Visual Studio Code на немецкой клавиатуре это Ctrl+Shift+^

Но вы должны открыть файл с правильным расширением - он не работает, например, в новых несохраненных файлах.

На немецкой клавиатуре это Ctrl+Shift+^.

На швейцарско-французской клавиатуре: используйте CTRL + SHIFT + ^

На испанском (Испания) клавиатура с VS2012 - это Ctrl + ¡, как указано @Keith, но если вы используете Ctrl + ¿ (набирается как Ctrl + Shift + ¡), то переходите к Соответствующей скобке, затем выбираете весь код в двух фигурных скобках, а затем вы не могу снова перейти к другой скобке.

Июнь 2021 г.

На Mac под управлением Windows 10 с параллельными Visual Studio 2019 и C # и с американской клавиатурой решение, которое сработало для меня, заключалось в редактировании ярлыка в «Инструменты Параметры Клавиатура Edit.GoToBrace

В моей системе этот ярлык был пустым ...

Нажмите клавишу Ctl и клавишу] и сохраните ярлык.

Windows, Visual Studio 2017, C++, венгерская клавиатура, Ctrl+ú

ВOptions/Environment/Keyboard, проверятьEditor.GotoBrace.

Другие вопросы по тегам