Как создать фрагмент кода «окружить» в Visual Studio 2010? - PullRequest
36 голосов
/ 05 мая 2011

Есть ли способ создать фрагмент «окружить» в visual studio 2010?Я знаю, как создать замену типа фрагмента.Простое окружение с фрагментом может окружать блок текста гиперссылкой asp :.Аналогично тому, как стандартные фрагменты «Surround» могут окружать блок кода с помощью панели asp:

Ответы [ 4 ]

32 голосов
/ 19 октября 2011

Оказывается, что есть некоторые заранее определенные идентификаторы, которые недостаточно документированы.Специально для фрагментов типа SurroundWith существует идентификатор $ выбранный $ .Так, например, код для фрагмента # if :

...
<Code Language="csharp">
    <![CDATA[#if $expression$ $selected$ $end$ #endif]]>
</Code>
...

Идентификатор $ end $ указывает, где размещать курсор, когда функция Surroundзавершено.Это действительно все, что нужно сделать.Конечно, не забудьте включить SurroundsWith в качестве SnippetType

. Для получения дополнительных примеров попробуйте взглянуть на предопределенные фрагменты в C: \ Program Files \ Microsoft Visual Studio 10.0 \\ Snippets \ 1033\.

26 голосов
/ 05 мая 2011

Взгляните на статью MSDN о создании фрагментов . Это должно дать вам хорошее начало. Когда вы создаете свой фрагмент, убедитесь, что для него задан SnippetType SurroundsWith, чтобы фрагмент окружал выбранный код.

Для последней версии Visual Studio (в настоящее время 2017) есть фрагменты кода в документах Microsoft , а также Пошаговое руководство. Создание фрагмента кода .

2 голосов
/ 28 сентября 2017

Пример и некоторые советы (основанные на предыдущих ответах) для VS2017:

Пример приведен для фрагмента XML, но я предполагаю, что это будет более или менее применимо к любому языку.

  1. Вставьте приведенный ниже код в файл и сохраните в любом месте как example.snippet
  2. из VS do Tools-> Диспетчер фрагментов кода, выберите Язык XML, а затем Мои фрагменты XML
  3. Нажмите «Импорт» и выберите пример.
  4. Нажмите Готово и ОК
  5. В этот момент я перезапустил VS, но такие драконовские меры могут не потребоваться.
  6. В файле XML выберите текст, который вы хотите окружить параметромтеги.
  7. Ctrl + K, Ctrl + S, выберите My XML Snippets и затем «Пример фрагмента SurroundWith».

A тег будет помещен перед вашим текстоми после.

Если вы добавите в конце новую строку, то после текста появится дополнительная пустая строка, и текст, следующий за конечным тегом, появится на той же строке, что и конечный тег.Это имеет смысл, если вы подумаете об этом.

Если вы выделите только часть текста в строке, вы можете получить или не получить то, что ожидали.Фрагмент, возможно, нуждается в доработке.

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>Example of a SurroundsWith snippet</Title>
      <Shortcut>shortcutsdontwork</Shortcut>
      <Description>
        complete example of SurroundsWith
        will put para tag on the line above selected text
        and /para end tag on the line below selected text
        will positon the cursor immediately after the
        closing angle bracket of the end tag
      </Description>
      <Author>mikedamay - TheDisappointedProgrammer</Author>
      <SnippetTypes>
        <SnippetType>SurroundsWith</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Code Language="XML">
        <![CDATA[<para>
        $selected$
        </para>$end$]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

Я ограничу свои редакционные комментарии о поведении фрагментов кода в VS2017, сказав, что реализация необычна для современной команды инструментов Microsoft.В частности, остерегайтесь утверждений о том, что делают ярлыки.Насколько я вижу, они не делают ничего полезного.

1 голос
/ 07 апреля 2017

Appart из полезных ответов выше, вот Ссылка на схему фрагментов кода , которая полезна для определения допустимых значений для элементов фрагментов.

...