¿Hay alguna forma de rodear el bloque de código con Llaves {} en VS2008?


Siempre me encuentro necesitando encerrar un bloque de código en llaves { }, pero desafortunadamente eso no está incluido en los fragmentos de código envolvente de C#, lo que parece ser un descuido. Tampoco pude encontrar nada en la construcción de tus propios fragmentos de sonido envolvente (solo otros tipos de fragmentos).

En realidad estoy ejecutando Resharper también, pero tampoco parece tener esta funcionalidad (o no he calculado cómo activarlo).

Tenemos un estándar de codificación de incluyendo incluso una sola línea de código después de un if o else en llaves, así que si pudiera hacer que Resharper haga esa refactorización automáticamente eso sería aún mejor!

Author: Jim McKeeth, 2010-05-05

8 answers

Aquí hay un fragmento rápido y sucio para hacer precisamente eso.

Para instalar:

Guarde el código como SurroundWithBraces.snippet en "<my documents>\Visual Studio Version\Code Snippets\Visual C#\My Code Snippets"

Para usar:

Seleccione bloque de texto.
Presione Ctrl+K, Ctrl+S
Elegí Mis Fragmentos de Código, llaves

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>braces</Title>
      <Shortcut>braces</Shortcut>
      <Description>Code snippet to surround a block of code with braces</Description>
      <Author>Igor Zevaka</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
        <SnippetType>SurroundsWith</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Code Language="csharp">
        <![CDATA[{
        $selected$ $end$
     }]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>
 48
Author: Igor Zevaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-04 23:45:49

En ReSharper 4.5, las llaves se incluyen como una de las 'Plantillas envolventes' integradas:

  1. Seleccione el texto que desea rizado tirantes alrededor.
  2. ReSharper -> Code -> Surround With... -> {}

    O

    ALT + R -> C -> S -> 7

    O

    Ctrl+E, U -> 7 (Visual Studio scheme)

    O

    Ctrl+Alt+J -> 7 (ReSharper 2.x / IDEA scheme)

 36
Author: Ray Vega,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-05 00:10:34

Qué tal:

Ctrl-X, {, Ctrl-V, }

Incluso podrías enlazar eso a una macro.

 18
Author: Jimmy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-17 13:15:57

En VS2015 hay una característica experimental que lo soporta seleccionando el texto y escribiendo}.

Vea aquí cómo habilitar.

 3
Author: Serge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-12 18:46:52

Haga su propio fragmento de código personalizado para hacer eso. Puedes usar snippy para crear tu propio http://blogs.msdn.com/gusperez/articles/93681.aspx o simplemente use un editor XML para crear uno.

Poner el archivo en Mis documentos \ Visual Studio XXXX\Fragmentos de Código \ C # \ Mis fragmentos de Código

 1
Author: helios456,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-04 23:18:58

Para completar la respuesta de Ray Vega, para aquellos que usan Resharper, descubrí que puedes asociar un atajo a los comandos Resharper.

Simplemente haga lo siguiente (estoy usando VS 2010):

Vaya a Herramientas- > Opciones

En el listbox, extender Entorno y haga clic en Teclado.

En el campo bajo "Show commands containing:" enter "resharper.resharper_surroundwith "

En el campo bajo "Presione teclas de acceso directo" ingrese su acceso directo (por ejemplo: elijo Ctrl + R, Ctrl+S) y haga clic Asignar y luego Aceptar.

Eso es todo. puede seleccionar su código y escribir ese shorcut para ver todos los comandos Resharper SurroundWith. Solo tienes que introducir 7 para poner frenos.

 1
Author: Shomron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-15 18:53:05

Edit: Esto resulta ser parte de DxCore, de DevExpress. Salir de aquí para que otros se den cuenta, pero básicamente yo estaba mal mal mal. Para hacer que este menú en particular desaparezca, lo deshabilita en el diálogo' add ins'; al descargar devexpress desde su propio menú, solo descarga CodeRush / Refactor, no las bibliotecas de soporte base.

El es (¡no!) una forma incorporada de hacerlo. No se si puedes atarle una llave o no. Además, esta incrustación no hace nada si solo seleccionas una línea, por lo que probablemente no funcionará bien si tus cosas están en una línea después del "si".

  1. Seleccione el bloque
  2. Haga clic con el botón derecho en
  3. Elija "Incrustar selección"
  4. Elija "Bloque {}"

Nota: Tengo DexExpress instalado, pero este menú está allí incluso cuando no está cargado, y podría jurar que está allí incluso cuando no está instalado. Sin embargo, si me equivoco...

Honestamente, esto parece algo que sería mejor pedirle a r#, una contribución de usuario tal vez?

 0
Author: Andrew Backer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-04 23:58:04

Puede envolver un bloque de código con llaves mediante

  1. Resalte el bloque de código
  2. Ctrl e - > Ctrl u
  3. seleccione la opción 7

Sé que esta es una vieja pregunta, pero espero que ayude a alguien

Ref: Envolviendo múltiples sentencias en llaves

 0
Author: TheLukeMcCarthy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:27