Есть ли способ окружить блок кода фигурными скобками {} в VS2008?

Мне всегда приходилось заключать блок кода в фигурные скобки {}, но, к сожалению, он не включен во фрагменты кода объемного звучания C #, что, похоже, является упущением. Я также не смог найти ничего о создании собственных сниппетов объемного звука (только другие виды сниппетов).

На самом деле я тоже использую Resharper, но, похоже, у него тоже нет этой функции (или я не понял, как ее активировать).

У нас есть стандарт кодирования, согласно которому даже одну строку кода после if или else в фигурных скобках, так что если бы я мог просто сделать Resharper сделайте этот рефакторинг автоматически, что было бы еще лучше!


person Jim McKeeth    schedule 04.05.2010    source источник
comment
если это просто для рефакторинга однострочников .. разве во фрагменте объемного текста не нажимается больше клавиш, чем просто набирать {}? Шаги: нажмите начало, {, END,} = так 3 нажатия, 1 щелчок. vs выберите текст, ctrl k, s, первые несколько букв имени фрагмента, введите = минимум 1 щелчок, минимум 4 нажатия клавиш (но только если intellisense приведет вас к фрагменту, набрав 1 букву)   -  person Francisco Noriega    schedule 05.05.2010
comment
Какая боль в ***. Я бы хотел просто выделить текст, который я хочу окружить, а затем символ, которым я хочу окружить, будь то {, [, (или, как я это делаю в PyCharm. Даже с ReSharper требуется непристойное количество нажатий клавиш для Каждый ярлык. Есть ли случайно какие-либо обновления этой функции в последних версиях?   -  person Agustín Lado    schedule 03.03.2016


Ответы (8)


Вот быстрый и грязный фрагмент, чтобы сделать именно это.

Установить:

Сохраните код как 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>
person Igor Zevaka    schedule 04.05.2010
comment
Работает отлично! Чтобы не отображать папку «Мои фрагменты кода» при нажатии на ярлык, вы можете поместить фрагмент прямо во внутреннее хранилище фрагментов кода VS. В моем случае для VS 2015 и C # путь: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC # \ Snippets \ 1033 \ Visual C # - person chviLadislav; 10.03.2017
comment
Могут ли сниппеты иметь параметры? Я имею в виду, что я также могу просто скопировать этот фрагмент 3 раза для квадратных скобок и скобок, но да, просто интересно :) - person GrayedFox; 04.11.2020

В ReSharper 4.5 фигурные скобки включены как один из встроенных шаблонов объемного звучания:

  1. Выделите текст, который вы хотите заключить в фигурные скобки.
  2. ReSharper -> Code -> Surround With... -> {}

    or

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

    or

    Ctrl+E, U -> 7 (схема Visual Studio)

    or

    Ctrl+Alt+J -> 7 (схема ReSharper 2.x / IDEA)

person Ray    schedule 04.05.2010

Как насчет:

Ctrl-X, {, Ctrl-V, }

Вы даже можете привязать это к макросу.

person Jimmy    schedule 05.05.2010
comment
Разумно, но при этом выделенный текст помещается в буфер обмена. - person devgeezer; 18.08.2010
comment
Мне это нравится! Это еще проще в последних версиях VS, которые автоматически заполняют вторую скобку за вас ... Ctrl-X, {, Ctrl-V - person Greg Jackman; 14.12.2014

В VS2015 есть экспериментальная функция, которая поддерживает его, выбирая текст и вводя}.

См. здесь как включить.

person Serge    schedule 12.04.2016
comment
и VS просто вылетели впервые за несколько дней, минут после того, как я включил экспериментальные функции в параметрах редактора C ++ ... хотя у меня нет кода CPP в моем sln. - person MattE_WI; 05.10.2016
comment
он действительно работает для меня в моем решении C ++, которое довольно сложно, однако, скорее всего, это зависит от того, что вы выберете для окружения. - person Serge; 06.10.2016

Создайте для этого свой собственный фрагмент кода. Вы можете использовать snippy для создания собственного http://blogs.msdn.com/gusperez/articles/93681.aspx или просто создайте его с помощью редактора XML.

Поместите файл в Мои документы \ Visual Studio XXXX \ Code Snippets \ C # \ My Code Snippets

person helios456    schedule 04.05.2010

Чтобы завершить ответ Рэя Веги, для тех, кто использует Resharper, я понял, что вы можете связать ярлык с командами Resharper.

Просто сделайте следующее (я использую VS 2010):

перейдите в Инструменты-> Параметры

В списке разверните «Среда» и нажмите «Клавиатура».

В поле «Показать команды, содержащие:» введите resharper.resharper_surroundwith.

В поле «Нажимайте сочетания клавиш» введите свой ярлык (например: я выбираю Ctrl + R, Ctrl + S) и нажмите «Назначить», а затем «ОК».

Вот и все. вы можете выбрать свой код и ввести этот ярлык, чтобы просмотреть все команды Resharper SurroundWith. Просто введите 7, чтобы поставить фигурные скобки.

person Shomron    schedule 15.03.2013
comment
Это не ответ на исходный вопрос. Это должен быть комментарий к упомянутому ответу или дополнить упомянутый ответ правкой. - person Kissaki; 07.02.2020

Изменить: Оказывается, это часть DxCore от DevExpress. Оставив здесь, чтобы другие заметили, но в основном я ошибался, ошибался, ошибался. Чтобы убрать это конкретное меню, вы отключите его в диалоговом окне «Добавить»; выгрузка devexpress из собственного меню просто выгружает CodeRush / Refactor, а не базовые библиотеки поддержки.

Это (а не!) встроенный способ сделать это. Не знаю, можно ли привязать к нему ключ или нет. Кроме того, это встраивание ничего не делает, если вы выбираете только одну строку, поэтому он, вероятно, не будет работать правильно, если ваш материал находится на одной строке после «если».

  1. Выберите блок
  2. Щелкните правой кнопкой мыши
  3. Выберите «Вставить выделение»
  4. Выберите "Заблокировать {}"

Примечание: у меня установлен DexExpress, но это меню есть, даже когда оно не загружено, и я могу поклясться, что оно есть, даже если оно не установлено. Однако, если я ошибаюсь ...

Честно говоря, это похоже на то, о чем лучше всего спросить r #, возможно, пользовательский вклад?

person Andrew Backer    schedule 04.05.2010
comment
В моей версии VS2008 этой опции нет, но, возможно, у меня что-то настроено иначе. У него есть опция Surround with ..., но там нет фигурных скобок. - person Mark Wilkins; 05.05.2010
comment
Оказывается, это часть DxCore, фреймворка поддержки DevExpress. Заметил это, когда пошел посмотреть, есть ли еще какой-нибудь таинственный аддон, о котором я забыл. Даже если вы отключите основной продукт, он останется, что объясняет, почему я не могу найти его в меню. - person Andrew Backer; 05.05.2010
comment
@Mark, я вижу то же самое. Похоже, я помню, как видел это, когда использовал DevExpress 'CodeRush. - person Jim McKeeth; 05.05.2010

Вы можете заключить блок кода в фигурные скобки,

  1. Выделите блок кода
  2. Ctrl e -> Ctrl u
  3. выберите вариант 7

Я знаю, что это старый вопрос, но я надеюсь, что он кому-то поможет

Ссылка: Заключение нескольких операторов в фигурные скобки

person TheLukeMcCarthy    schedule 01.04.2016
comment
Обратите внимание, что это относится к Visual Studio с Resharper. Без Resharper это не сработает. - person Simon Tewsi; 28.03.2018