Go to Matching Brace in Visual Studio?

Visual Studio-2008Keyboard ShortcutsCurly Braces

Visual Studio-2008 Problem Overview


Is there a way in Visual Studio 2008 to go from a closing brace to its opening brace? I've found a fair amount of stuff about highlighting the brace, but nothing about moving the cursor to it.

(VB.NET version of this Question: https://stackoverflow.com/q/7888108/740639)

Visual Studio-2008 Solutions


Solution 1 - Visual Studio-2008

I found this for you: Jump between braces in Visual Studio:

> Put your cursor before or after the brace (your choice) and then press CTRL + ]. It works with parentheses ( ), brackets [ ] and braces { }. From now on you don’t need to play Where’s Waldo? to find that brace.

With the above shortcut, you can also hold SHIFT to select.

On MacOS, use CMD + SHIFT + \ .

Solution 2 - Visual Studio-2008

I use Visual Studio 2008, and you can customize what you want this shortcut to be.

Click menu Tools -> Options -> Environment -> Keyboard. Then look for Edit.GotoBrace.

This will tell you what key combination is currently assigned for this. I think you can change this if you want, but it's useful if the Ctrl + ] doesn't work.

Solution 3 - Visual Studio-2008

Use CTRL + ] to switch between them. Place the cursor at one of the braces when using it.

Solution 4 - Visual Studio-2008

Note: It also works for #if / #elif / #endif matching. The caret must be on the #.

Solution 5 - Visual Studio-2008

If for some reason this is NOT working for you, something may have messed up your keyboard bindings (it didn't work for me). You can re-enable the binding easy enough though - at least so I thought:

I tried this procedure:

  • Go to menu Tools -> Options -> Environment -> Keyboard
  • Scroll to, or search for the command Edit.GotoBrace
  • Assign the desired shortcut (mine was empty, so I put in CTRL    + ])
  • Be sure to click the "Assign Button"

I tried it, and it still didn't work. I restarted Visual Studio, and it still didn't work - well it ONLY worked for .cs files, but I need it to work for .vb files and text files, and...well ALL files!

Solution 6 - Visual Studio-2008

On my French keyboard, it's CTRL + ^.

Solution 7 - Visual Studio-2008

On a German keyboard it's Ctrl + ´.

Solution 8 - Visual Studio-2008

On a Spanish keyboard it is CTRL + ¿ (or CTRL + ¡).

Solution 9 - Visual Studio-2008

On my Danish keyboard it's CTRL + Å.

Solution 10 - Visual Studio-2008

And Ctrl + Shift + ] will select all of the text.

Solution 11 - Visual Studio-2008

On a Turkish keyboard, it is Ctrl + ü.

Solution 12 - Visual Studio-2008

For completeness sake, on a Swedish keyboard it's CTRL + å .

Also, I guess logical, but worth mentioning CTRL + shift + å (for capital Å), selects everything inside the braces and goes to the matching one.

Solution 13 - Visual Studio-2008

On my Portuguese keyboard and SO with EN VS, it's CTRL + « to navigate to matching brace and CTRL + SHIFT + « if you intend to select the inner code.

Solution 14 - Visual Studio-2008

On my pt-BR (Brazilian Portuguese) keyboard it is actually CTRL + [.

Solution 15 - Visual Studio-2008

On my Italian keyboard, it's CTRL + ^.

Solution 16 - Visual Studio-2008

On my Slovenian keyboard it is ALT    + Đ

Solution 17 - Visual Studio-2008

For Visual Studio Code (as seen in their documentation), use Ctrl+Shift+</kbd>.

The setting can be found in:

> File/Preferences/Keyboard Shortcut

I am using Visual Studio Code 1.8.0 . Note Visual Studio Code may behave differently for international keyboards (as seen in this answer re: German keyboard)

Hope this helps someone.

Solution 18 - Visual Studio-2008

On a Mac use command+shift+</kbd>.

Source: a comment on this answer: https://stackoverflow.com/a/37877082/3345085. Tested in Visual Studio Code version 1.10.2.

Solution 19 - Visual Studio-2008

On my Dutch (Belgian) keyboard, it's CTRL + ^.

Solution 20 - Visual Studio-2008

Goto Tools > Options > Environment > Fonts and Colors, select the "Brace Matching (Rectangle)" and change the "Item Background" to e.g. Yellow. This worked for the C# parentheses () {} and [].

Solution 21 - Visual Studio-2008

Details that can benefit everyone (Linux/Win/Mac)

The command in the keyboard shortcuts menu/editor is editor.action.jumpToBracket there you can set it to whatever you like. There is also one called editor.action.selectToBracket which has no shortcut by default (at least on Mac).

Etc.

On the Mac editor.action.jumpToBracket starts out as Cmd+Shift+\ and I changed it to Ctrl+] to be in line with what others say here. I did so in the hopes that I could use Ctrl+Shift+] to "Extend selection to matching bracket". That is what lead me to discover the details above. I set editor.action.selectToBracket to Ctrl+Shift+] and got exactly the behavior I wanted.

Solution 22 - Visual Studio-2008

On a Hungarian keyboard it is Ctrl + ú.

Solution 23 - Visual Studio-2008

A bit relevant, but for HTML tags: (since there is no built-in solution, Ctrl + J doesn't work for HTML tags : )

Here is the answer as a macro which I've built which does it (toggle), including go to focus:

Here is the demo:

Enter image description here

And here is the code. Enjoy!

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

Solution 24 - Visual Studio-2008

In Visual Studio Code on german keyboard it's ctrl+shift+^

But you have to open a file with correct extension - it's not working in new unsaved files for example.

Solution 25 - Visual Studio-2008

On the Swiss-French keyboard : use CTRL + SHIFT + ^

Solution 26 - Visual Studio-2008

On Spanish (Spain) keyboard with VS2012 is Ctrl + ¡ as stated by @Keith but if you use Ctrl + ¿ (typed as Ctrl + Shift + ¡) then goes to Matching Brace plus selects all the code within the two braces and then you can't go again to the other brace.

Solution 27 - Visual Studio-2008

June 2021

On a Mac running Windows 10 under parallels for Visual Studio 2019 and c# and with US keyboard the solution which worked for me was to edit the shortcut in" Tools Options Keyboard Edit.GoToBrace

On my system that shortcut was blank...

Press the Ctl key and the ] key and save the shortcut

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionthepocketwadeView Question on Stackoverflow
Solution 1 - Visual Studio-2008Tim SantefordView Answer on Stackoverflow
Solution 2 - Visual Studio-2008funkymushroomView Answer on Stackoverflow
Solution 3 - Visual Studio-2008Ahmad MageedView Answer on Stackoverflow
Solution 4 - Visual Studio-2008PierreView Answer on Stackoverflow
Solution 5 - Visual Studio-2008Paul GorbasView Answer on Stackoverflow
Solution 6 - Visual Studio-2008Matthieu RougetView Answer on Stackoverflow
Solution 7 - Visual Studio-2008BaldewinView Answer on Stackoverflow
Solution 8 - Visual Studio-2008KeithView Answer on Stackoverflow
Solution 9 - Visual Studio-2008RaymondView Answer on Stackoverflow
Solution 10 - Visual Studio-2008JCS in TampaView Answer on Stackoverflow
Solution 11 - Visual Studio-2008Turkdogan TasdelenView Answer on Stackoverflow
Solution 12 - Visual Studio-2008Ola KarlssonView Answer on Stackoverflow
Solution 13 - Visual Studio-2008RodrigoView Answer on Stackoverflow
Solution 14 - Visual Studio-2008karlphillipView Answer on Stackoverflow
Solution 15 - Visual Studio-2008PeppeView Answer on Stackoverflow
Solution 16 - Visual Studio-2008skzView Answer on Stackoverflow
Solution 17 - Visual Studio-2008Claudiu HardalauView Answer on Stackoverflow
Solution 18 - Visual Studio-2008LoganView Answer on Stackoverflow
Solution 19 - Visual Studio-2008Ward CoessensView Answer on Stackoverflow
Solution 20 - Visual Studio-2008jasumon janardananView Answer on Stackoverflow
Solution 21 - Visual Studio-2008Bruno BronoskyView Answer on Stackoverflow
Solution 22 - Visual Studio-2008ZéikszView Answer on Stackoverflow
Solution 23 - Visual Studio-2008Royi NamirView Answer on Stackoverflow
Solution 24 - Visual Studio-2008MarkusView Answer on Stackoverflow
Solution 25 - Visual Studio-2008Fabio SalvalaiView Answer on Stackoverflow
Solution 26 - Visual Studio-2008David Oliván UbietoView Answer on Stackoverflow
Solution 27 - Visual Studio-2008SunbeamRapierView Answer on Stackoverflow