Перейти к соответствующей скобке в Visual Studio?


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

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

26 480

26 ответов:

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

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

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

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

выберите пункт меню инструменты ->опции ->окружающая среда ->клавиатура. Тогда ищите правка.GotoBrace.

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

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

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

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

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

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

Я попробовал, и это все еще не сработало. Я перезапустил Visual Studio, и он все еще не работал - ну, он работал только для .cs файлы, но мне нужно, чтобы он работал .файлы VB и текстовых файлов, а также...ну все файлы!

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

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

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

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

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

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

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

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

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

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

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

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

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

на клавиатуре это Ctrl + -.

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

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

вот демо:

Enter image description here

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

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

на немецкой клавиатуре это ctrl+ shift+^.

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

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

в коде Visual Studio на немецкой клавиатуре это ctrl+ shift+^

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

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

источник: комментарий к этому ответу:https://stackoverflow.com/a/37877082/3345085. Протестировано в Visual Studio Code версии 1.10.2.

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

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

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

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

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