Перейти к сопоставлению скобки в Visual Studio?

544

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

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

thepocketwade
источник
1
невероятно, но это не работает (2019) для файлов .js в Mac Visual Studio. WTH ?!
Толстяк
@ Толстяк, он не работает в Windows 10 для файлов .cs. Я вполне уверен, что это универсальная вещь для VS 2019, поэтому я задал новый вопрос: stackoverflow.com/q/59183422/1739000
NH.

Ответы:

734

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

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

На MacOS используйте CMD+ SHIFT+\

Тим Сантефорд
источник
52
Просто для справки, на норвежской клавиатуре это сокращение Ctrl+ Å(аналогично датской клавиатуре, упомянутой в ответе ниже).
Джулиан
55
Кроме того, в VS 2010 и на немецкой клавиатуре это Ctrl+ ´. Это апостроф прямо рядом с реверсом.
Kjellski
11
На бельгийском азерте это, кажется, ctrl+ ^, что, как ни странно, на ключе, который также имеет [скобку (которую нужно AltGrнабирать).
Nyerguds
50
используйте CTRL +] + SHIFT для выделения текста между ними
ygaradon
15
на итальянской клавиатуре это CTRL + м
Pisu
110

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

Ахмад Магид
источник
107

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

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

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

funkymushroom
источник
3
Это очень полезно для поиска сочетаний клавиш для других языков.
Афонсо Матос
Да, мы всегда должны отвечать на вопросы команд с помощью имени команды в случае, если клавиатура отличается или ярлык по умолчанию был удален. Также проверьте Edit.GotoBraceExtend, если вы сопоставляете Ctrl + [что-то] с Edit.GotoBrace, вы, вероятно, захотите сопоставить Ctrl + Shift + [что-то] с Edit.GotoBraceExtend.
hsandt
1
Это было полезно для меня, потому что он не был установлен для меня вообще в VS 2017.
Ммм
26

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

пьер
источник
22

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

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

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

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

Пол Горбас
источник
2
Для файлов VB используйте CTRL+ SHIFT+ UP/DOWN(ссылка: stackoverflow.com/a/7895072/740639 )
Уолтер Стабос
@WalterStabosz Здесь не работает (VS2015 VB.NET).
Иванзиньо,
20

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

Матье Руж
источник
17

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

Baldewin
источник
12

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

Кит
источник
2
10 минут на обнаружение WTF было, как написано в меню опций VS2008. Спасибо!
Roman Rdgz
11

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

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

Ола Карлссон
источник
11

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

Раймонд
источник
11

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

JCS в Тампе
источник
10

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

Питер Мортенсен
источник
9

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

Peppe
источник
9

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

karlphillip
источник
9

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

Туркдоган Тасделен
источник
8

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

СКЗ
источник
2
По умолчанию это CTRL + -
Марко Юванчич
6

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

Уорд Кессенс
источник
6

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

Джасумон Джанарданан
источник
Да, полезно, и в текстовом поле «Отображаемое имя» шрифтов и цветов находится прямоугольник скобок.
Катто
Если у вас темная тема, как у меня, голубой вместо желтого также сделает скобку более заметной.
Бора
5

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

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

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

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

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

Клавдиу Хардалау
источник
5

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

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

И т.п.

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

Бруно Броноски
источник
4

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

Zéiksz
источник
4

Немного актуально, но для тегов 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
Ройи Намир
источник
Стандартное сопоставление <Control> +] для США работает и в HTML, и в CSS. Оба тега тоже подсвечиваются.
Пол Горбас
3

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

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

Markus
источник
3

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

olippuner
источник
1
Работает так на моей французской клавиатуре!
Сильвен П.
В Visual Studio 2019 Windows \ German я нашел это: [Cntrl] + [´] для работы
Монг Чжу
2

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

Фабио Сальвалай
источник
2

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

Дэвид Оливан Убието
источник