2010-05-04 170 views
42

我總是發現自己需要在花括號{}中包含一段代碼,但不幸的是,這不包括在C#環繞代碼片段中,這似乎是一個疏忽。我無法找到構建自己的環繞聲片段的任何內容(只是其他類型的片段)。在VS2008中使用大括號{}圍繞代碼塊的任何方法?

我實際上也在運行Resharper,但它似乎並沒有這個功能(或者我還沒有想過如何激活它)。

我們有包括甚至代碼一行的編碼標準的如果或其他大括號之後,所以如果我可以只讓ReSharper的做自動重構會更加美好!

+0

如果它只是爲了重構這一行內容而不是一個環繞片段而不是僅僅輸入{}? 步驟: 單擊開始,{,END,} = SO 3個按鍵,1次點擊。 vs 選擇文本,ctrl k,s,片段名稱的前幾個字母,輸入=至少1次單擊,最少4次按鍵(但只有在智能感知將您輸入片段後輸入1個字母) – 2010-05-04 23:25:16

+1

真是痛苦在裏面 ***。我喜歡簡單地選擇我希望圍繞的字符,然後選擇我希望圍繞的字符,就像{,[,(或者),就像我在PyCharm上做的那樣。即使使用ReSharper,也需要一個下流的按鍵對於 每個快捷方式。偶然有任何更新爲最新版本? – 2016-03-02 22:55:37

回答

44

這是一個快速和髒的片段來做到這一點。

安裝:

保存代碼SurroundWithBraces.snippet"<my documents>\Visual Studio Version\Code Snippets\Visual C#\My Code Snippets"

要使用:

文本的選擇塊。
Ctrl+K, Ctrl+S
選擇了我的代碼段,括號

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

非常棒!爲了避免在按下快捷鍵時顯示我的代碼片段文件夾,您可以將片段放在VS片段的內部存儲器中。在我的情況下,VS 2015和C#的路徑是:C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC#\ Snippets \ 1033 \ Visual C# – chviLadislav 2017-03-10 08:03:45

0

編輯:這原來是DxCore的一部分,從DevExpress的。離開這裏讓其他人注意,但基本上我錯了錯。爲了讓這個特定的菜單消失,你可以在'add ins'對話框中禁用它。從他們自己的菜單中卸載devexpress只需卸載CodeRush/Refactor,而不是基礎支持庫。

這是(不!)一個內置的方式來做到這一點。我不知道你是否可以將密鑰綁定到它。另外,如果你只選擇一行,這個嵌入不會執行任何操作,所以如果你的東西在「if」之後的一行中,它可能無法正常工作。

  1. 選擇塊
  2. 右鍵點擊
  3. 選擇 「嵌入選擇」
  4. 選擇 「阻止{}」

注:我已經安裝DexExpress,但這個菜單甚至有當它沒有加載時,我可以發誓它即使沒有安裝。然而,如果我誤會...

這真的好像是最好問問r#for,用戶的貢獻也許?

+0

此功能,此選項似乎並不在我的版本VS2008的,但也許我已經配置了不同的東西。它確實有一個「環繞帶...「選項,但沒有大括號 – 2010-05-04 23:39:04

+0

事實證明它是DevExpress支持框架DxCore的一部分,當我去看看是否還有其他一些我忘記的神祕插件時,注意到了它。你禁用了仍然存在的主要產品,這就解釋了爲什麼我在菜單中找不到它。 – 2010-05-04 23:48:10

+0

@Mark是我看到的同樣的東西。似乎我記得在使用DevExpress時看到了這個'的CodeRush。 – 2010-05-04 23:52:39

36

在ReSharper的4。5,大括號包含的內置「環繞模板」之一:

  1. 選擇要圍繞花 括號中的文字。
  2. ReSharper -> Code -> Surround With... -> {}

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

    Ctrl+E, U -> 7(Visual Studio中方案)

    Ctrl+Alt+J -> 7(ReSharper的2.X/IDEA方案)

17

如何:

Ctrl-X, {, Ctrl-V, } 

你甚至可以綁定,爲宏。

+0

合理,但是這樣做會將選定的文本放在剪貼板上。 – devgeezer 2010-08-18 16:52:01

+0

不錯的快速和骯髒的黑客,只是工作! – Thomas 2013-10-15 15:52:13

+5

我喜歡這個!在最新的VS版本中,它會更簡單 - 自動完成第二個支架... Ctrl-X,{,Ctrl-V – 2014-12-14 20:41:26

1

爲了完成Ray Vega的回答,對於那些使用Resharper的人,我想通了你可以將一個快捷方式關聯到Resharper命令。

只要做到以下(我使用VS 2010):

去工具 - >選項

在列表框,擴展環境並單擊鍵盤。

在該領域下的「顯示命令包含:」輸入「resharper.resharper_surroundwith」

在電場作用下「按下快捷鍵」輸入你的快捷方式(如:我選擇按Ctrl + R,按Ctrl + S)和點擊分配然後確定。

就是這樣。您可以選擇您的代碼,然後鍵入該shorcut查看所有Resharper SurroundWith命令。只需輸入7即可放置大括號。

3

在VS2015中有一個實驗性功能,通過選擇文本並鍵入來支持它。

請參閱here如何啓用。

+0

不幸的是,這隻適用於C++,而不適用於C#。 – 2016-10-05 15:20:17

+0

*和* VS在我啓用C++編輯器選項中的實驗性功能後的幾分鐘內第一次崩潰,即使我的sln中沒有CPP代碼。 – 2016-10-05 15:21:49

+0

它適用於我的C++解決方案,這非常複雜,但它更可能取決於您選擇的環繞方式。 – Serge 2016-10-06 17:58:38