Surround code block with curly braces?
Asked Answered
D

8

34

Is there a shortcut to surround a given (selected) code block with curly braces?

VS 2015 + R# 2016.1

Derward answered 4/5, 2016 at 13:24 Comment(0)
T
15

As an as an alternative to Patrick's answer (Ctrl+E, U, 7) you could also use the extended Alt+Enter -menu of ReSharper 9+.

Alt+Enter, UP, UP, Enter, or

Alt+Enter, "bl", Enter

Screen

Unfortunately, I don't know a way to bind this to a shorter hotkey.

But if this is really important to you, you could try AutoHotkey.

Thebault answered 5/5, 2016 at 16:58 Comment(6)
Thanks, guess I'll give the "ALT+ENTER bl ENTER" a try. Hopefully youtrack.jetbrains.com/issue/RSRP-101338 is reopened...Derward
done in 2017.3: youtrack.jetbrains.com/issue/RSRP-101338#comment=27-2529794Vivia
FYI: You can do this out of the box in QtCreator by simply typing the opening curly brace (or parenthesis, quote, etc) while a block of text is selected. I miss this so much when having to work with VS.Rolle
@EmileCormier you can do it in any IDE or editor I've ever used besides VS. Even its younger sibling, VS Code, has it. Even Firefox's browser console has it! I don't understand how they could be missing this basic feature.Sofa
Thanks for Alt+Enter, plain VS has that option there now VS2022Rubellite
It's honestly comical how hard they make this for no apparent reason.Dx
M
44

You do not need Resharper for this. You can use the "surround with" with a custom snippet.

Then you can select your text with Ctrl + K, Ctrl + S and select the snippet {} in the custom snippet. In order to create such a snippet :

  1. Create a ".snippet" file containing the content below
  2. Go to the snippet manager (Tools > Code Snippets Manager)
  3. Click import and select the file you just created

Use the following snippet :

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
 <CodeSnippet Format="1.0.0">
  <Header>
   <Title>{}</Title>
   <Shortcut>{}</Shortcut>
   <Description>Code snippet for {}</Description>
   <Author>Alexandre</Author>
   <SnippetTypes>
    <SnippetType>Expansion</SnippetType>
    <SnippetType>SurroundsWith</SnippetType>
   </SnippetTypes>
  </Header>
  <Snippet>
   <Code Language="csharp">
    <![CDATA[{ 
    $selected$ $end$ 
    }]]>
  </Code>
  </Snippet>
 </CodeSnippet>
</CodeSnippets>
Marybethmaryellen answered 27/9, 2018 at 7:12 Comment(5)
Thanks! However, I think you forgot the following two closing tags at the end: </CodeSnippet> </CodeSnippets>Bernadettebernadina
@WendelinReich Indeed, forgot the spaces in the code indentation, now corrected! please vote for my answer if you like it, it encourages me to answerMarybethmaryellen
I wanted to push it further and add specific keybind for it. I simply couldnt. So only combination Ctrl+K Ctr+S and double Tab, works for me now. Is there way around it?Hetzel
It is faster to cut the code add one { it will automatically create the closing bracket then paste it. +1 cause this solution works but I am using my old technique where I copy and paste it inside braces.Lai
The solution of AlexanderG is Great, but you must put snippets in C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC#\Snippets\1033\Visual C# as was wrote by baobab159 below. If you put it in standard place, proposed by VS (My Code Snippets), in will unuseful, because you can't use the quick shortcuts - CTRL + K + S + {} and after TAB. (In other case, you will must at First, by mouse, select the catalog of the snippet My Code Snippets and after select the snippet self, It is terrible design and is brokening the Idea of use shortcuts)Kentiggerma
T
15

As an as an alternative to Patrick's answer (Ctrl+E, U, 7) you could also use the extended Alt+Enter -menu of ReSharper 9+.

Alt+Enter, UP, UP, Enter, or

Alt+Enter, "bl", Enter

Screen

Unfortunately, I don't know a way to bind this to a shorter hotkey.

But if this is really important to you, you could try AutoHotkey.

Thebault answered 5/5, 2016 at 16:58 Comment(6)
Thanks, guess I'll give the "ALT+ENTER bl ENTER" a try. Hopefully youtrack.jetbrains.com/issue/RSRP-101338 is reopened...Derward
done in 2017.3: youtrack.jetbrains.com/issue/RSRP-101338#comment=27-2529794Vivia
FYI: You can do this out of the box in QtCreator by simply typing the opening curly brace (or parenthesis, quote, etc) while a block of text is selected. I miss this so much when having to work with VS.Rolle
@EmileCormier you can do it in any IDE or editor I've ever used besides VS. Even its younger sibling, VS Code, has it. Even Firefox's browser console has it! I don't understand how they could be missing this basic feature.Sofa
Thanks for Alt+Enter, plain VS has that option there now VS2022Rubellite
It's honestly comical how hard they make this for no apparent reason.Dx
M
13

The quickest built-in shortcut in the Visual Studio scheme I can find is Ctrl+E+U, 7 (surround with..., then choose option 7 which is curly braces).

I don't see a shortcut for it in Visual Studio's keyboard options, so that may be the best you can get.

Magdalenamagdalene answered 4/5, 2016 at 14:22 Comment(3)
Visual Studio 2017 doesn't seem to have the curly braces option in the surround with menu.Filbert
There is an option for this under C/C++ > Advanced options, under the Text Editor grouping at the bottom. But it doesn't seem to affect the C# editor.Civic
This doesn't work in Visual Studio 2019 either. Pressing Ctrl+E starts a keyboard chord and doesn't open the Surround with... menu.Colorfast
P
8

At least in Visual Studio 2019, this is a built-in optional feature, albeit it is:

  1. Disabled by default
  2. Buried deep in the Options

To enable this feature, select ToolsOptions to open the Options dialog. In the left-hand pane that shows the options groups, expand the Text Editor group, then expand the C/C++ sub-group, then select the Advanced item. Now scroll all the way to the bottom of the right-hand pane and you'll see the following options under the Text Editor section:

Option Value
Enable Surround with Braces False
Enable Surround with Parentheses False

Change both of those to "True" (assuming you want both behaviors) and you're good to go!

Poon answered 11/2, 2021 at 14:51 Comment(2)
These options don't seem to be available for the C# text editor.Sloppy
Once you enable the above options, you can highlight text and press '{' to automatically surround the selected text with curly braces, or '(' for parentheses.Chivy
D
2

AlexandreG's solution works great. From my side I can tell you have to save the file with .snippet extension. And 2nd tip: if you want to save a snippets together with system snippets you must save them here: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC#\Snippets\1033\Visual C# or copy location from snippets file dialog

Dermatophyte answered 27/12, 2020 at 19:26 Comment(0)
P
2

I am using the Auto Surround extension in Visual Studio 2022. It's easy to use, simple, and requires no configuration or snippets.

here is how to set it up:

  1. Install it from this link
  2. Reopen Visual studio
  3. Select code block that you want to surround.
  4. Press '{' or '(' or '['.The extension will automatically surround the selected code with the pressed symbol.
Portis answered 22/8, 2023 at 10:5 Comment(2)
This does not provide an answer to the question. Once you have sufficient reputation you will be able to comment on any post; instead, provide answers that don't require clarification from the asker. - From ReviewAudet
As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.Sprayberry
H
1

using visual studio 2017 with resharper 2017, it seems like the way to do this would be to hit CTRL+E and either: Up,Up,Enter , or start typing the shortcut name (swb will match Surrond With block and make you happy.

I'm not 100% sure if this is VS or RS though, since the CTRL+E is VS 2017.
On the plus side, you can easily search for shortcuts and find new gems once you've hit the CTRL+E combo.

Update
This is part of Resharper. I'm using 2017.1.1 ultimate. You can find more surround with templates on their page for live templates.

Hysterics answered 31/7, 2017 at 2:22 Comment(4)
Tried VS17 and R# 2017.1 -> CTRL+E is R# on my side, and swb does not work at all :-(Derward
@Derward Hmmm ... Tried with VS 2017 + code maid ... no love ... CTRL+K,CTRL+S will give you surround with options, but none for block. you can use any of the close enough ones (using for example) and simply change it, but yeah, not worth it if you can just type the brackets.Hysterics
This is ridiculous that VS can't do this. MonoDevelop does it automatically when you press the { key.Filbert
@KyleDelaney sublime does as well. visual code does as well ..(both for curly and normal braces) .... :)Hysterics
F
1

This feature was just added to Visual Studio. From version 17.9 you can enable "Auto Surround with Quotes or Brackets" from Text Editor settings. Then you can select a block and just type a curly brace to surround the entire block. See this blog post for details.

Fetter answered 16/2, 2024 at 12:15 Comment(1)
Thanks, finally found how to disable it.Zenithal

© 2022 - 2025 — McMap. All rights reserved.