2010-05-04 5 views
42

Ich muss immer einen Code in geschweiften Klammern {} einschließen, aber leider ist das nicht in den C# Surround-Code-Schnipsel enthalten, die ein Versehen zu sein scheint. Ich konnte auch nichts über das Erstellen eigener Surround-Snippets finden (nur andere Arten von Snippets).Gibt es eine Möglichkeit, in VS2008 einen Codeblock mit Curly Braces {} zu umgeben?

Ich laufe tatsächlich auch Resharper, aber es scheint auch nicht diese Funktionalität zu haben (oder ich habe nicht herausgefunden, wie man es aktiviert).

Wir haben eine Codierungsstandard auch nur eine einzige Zeile Code von einschließlich nach einem wenn oder sonst in geschweiften Klammern, also wenn ich nur ReSharper tun machen könnte, dass wäre noch besser, automatisch, dass Refactoring!

+0

wenn es nur um die One-Liner Refaktor ist .. ist nicht ein Surround-Snippet mehr Tasten drücken als nur in der Eingabe {}? Schritte: Klicken Sie auf Anfang, {, END,} = so 3 Tastendruck, 1 Klick. vs wählen Sie Text, Strg k, s, erste Buchstaben des Snippet-Namens, eingeben = mindestens 1 Klick, mindestens 4 Tastendrücke (aber nur wenn intellissense bringt Sie den Schnipsel durch Eingabe von 1 Buchstaben) –

+1

Was für ein Schmerz in dem ***. Ich würde gerne einfach den Text auswählen, den ich umgeben möchte, dann den Charakter, den ich umgeben möchte, sei es {, [, (oder ", genau wie ich es bei PyCharm mache. Auch bei ReSharper wird eine obszöne Anzahl von Tastendrücken benötigt für jede Verknüpfung Gibt es zufällig ein Update bezüglich dieser Funktionalität in den neuesten Versionen? –

Antwort

44

Hier ist ein schnelles und schmutziges Schnipsel, um genau das zu tun.

installieren:

Speichern Sie den Code als SurroundWithBraces.snippet in "<my documents>\Visual Studio Version\Code Snippets\Visual C#\My Code Snippets"

zu benutzen:

Wählen Sie Textblock.
Presse Ctrl+K, Ctrl+S
Mein Code Snippets Chose, Klammern

<?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> 
+0

Funktioniert gut! Um zu vermeiden, dass der Ordner "My Code Snippets" angezeigt wird, wenn Sie die Verknüpfung drücken, können Sie das Snippet direkt in den internen Speicher von VS-Snippets einfügen. In meinem Fall für VS 2015 und C# ist der Pfad: C: \ Programme (x86) \ Microsoft Visual Studio 14.0 \ VC# \ Snippets \ 1033 \ Visual C# – chviLadislav

1

Erstellen Sie Ihr eigenes Code-Snippet dafür. Sie können Snippy verwenden, um Ihre eigenen http://blogs.msdn.com/gusperez/articles/93681.aspx zu erstellen oder einfach einen XML-Editor zu verwenden, um einen zu erstellen.

die Datei in Eigene Dateien \ Visual Studio XXXX \ Code Snippets \ C# \ My Code Snippets

0

bearbeiten Put: Dies erweist sich als Teil DXCore, von DevExpress zu sein. Hier wegzugehen, damit andere es bemerken, aber im Grunde war ich falsch falsch falsch. Um dieses spezielle Menü zu deaktivieren, deaktivieren Sie es im "Add-Ins" -Dialog. Entladen von ihrem eigenen Menü entlädt nur CodeRush/Refactor, nicht die Basis-Support-Bibliotheken.

Das ist (nicht!) ein eingebauter Weg, es zu tun. Ich weiß nicht, ob Sie einen Schlüssel daran binden können oder nicht. Außerdem führt diese Einbettung nichts aus, wenn du nur eine Zeile auswählst, also wird es wahrscheinlich nicht richtig funktionieren, wenn deine Sachen in einer Zeile nach dem "if" sind.

  1. Wählen Sie den Block
  2. Rechtsklick
  3. Wählen Sie "Embed Selection"
  4. Wählen Sie "Block {}"

Hinweis: Ich habe DexExpress installiert, aber das Menü ist es auch wenn es nicht geladen ist, und ich könnte schwören, es ist da, auch wenn es nicht installiert ist. Allerdings, wenn ich mich irre ...

Das scheint ehrlich gesagt etwas, das wäre am besten zu fragen, für einen Benutzer Beitrag vielleicht?

+0

Diese Option scheint nicht in meiner Version von VS2008 zu sein, aber vielleicht habe ich etwas anders konfiguriert.Es hat einen "Surround mit ... "Option, aber keine geschweifte Klammer drin. –

+0

Es stellt sich heraus, dass es Teil von DxCore, dem Support-Framework für DevExpress ist. Ich merkte es, als ich nachgesehen habe, ob es ein anderes Mystery-Addon gab, das ich vergessen habe Du deaktivierst das Hauptprodukt, das bleibt immer noch, was erklärt, warum ich es nicht im Menü finde. –

+0

@Mark das ist das gleiche, was ich sehe. Scheint so, als ob ich das hier sah, als ich DevExpress 'benutzte. CodeRush. –

36

In ReSharper 4.5 sind geschweifte Klammern als eine der eingebauten ‚Surround-Vorlagen‘ enthalten:

  1. Wählen Sie den Text, den Sie geschweiften Klammern um wollen.
  2. ReSharper -> Code -> Surround With... -> {}

    oder

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

    oder

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

    oder

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

17

Wie wäre:

Ctrl-X, {, Ctrl-V, } 

Sie auch, dass an einem Makro binden könnte.

+0

Angemessen, aber dabei den ausgewählten Text in die Zwischenablage legt. – devgeezer

+0

netter schneller und schmutziger Hack, der einfach funktioniert! – Thomas

+5

Ich mag das! Es ist noch einfacher in den neuesten VS-Versionen, die die zweite Klammer für Sie automatisch vervollständigen ... Ctrl-X, {, Ctrl-V –

1

Um Ray Vegas Antwort zu vervollständigen, habe ich herausgefunden, dass Sie ReSharper-Befehlen eine Verknüpfung zuordnen können.

tun nur die folgenden (ich bin mit VS 2010):

Tools- gehen> Optionen

Im Listenfeld erweitern Umwelt und klicken Sie auf Tastatur.

Im Bereich unter "Show Befehlen:" enter "resharper.resharper_surroundwith"

Im Bereich unter "Press Shortcut-Taste" geben Sie Ihre Verknüpfung (zB: Ich wähle Strg + R, Strg + S) und Klicken Sie auf Zuweisen und dann auf OK.

Das ist es. Sie können Ihren Code auswählen und diesen Shorcut eingeben, um alle Resharper-SurroundWith-Befehle anzuzeigen. Geben Sie einfach 7 ein, um Klammern zu setzen.

3

In VS2015 gibt es eine experimentelle Funktion, die es unterstützt, indem Sie den Text auswählen und in} eingeben.

Siehe here wie aktivieren.

+0

Leider funktioniert das nur in C++, nicht in C#. –

+0

* und * VS stürzte zum ersten Mal in Tagen, Minuten, nachdem ich die experimentellen Funktionen in C++ - Editor-Optionen aktiviert ... obwohl ich keinen CPP-Code in meinem SLN habe. –

+0

funktioniert es für mich auf meiner C++ Lösung, die ziemlich komplex ist, aber es hängt wahrscheinlich davon ab, was Sie auswählen, um zu umgeben. – Serge

Verwandte Themen