Есть ли способ создать фрагмент "surround с" в visual studio 2010? Я знаю, как создать заменяющий тип фрагмента. Простое окружение с фрагментом может окружать блок текста гиперссылкой asp:. Подобно тому, как по умолчанию "окружающие" фрагменты могут окружать блок кода панелью asp:.
Как создать фрагмент типа "объемный с" в Visual Studio 2010?
Ответ 1
Посмотрите статью MSDN на создание фрагментов. Это должно дать вам хорошее начало. Когда вы создаете свой фрагмент, обязательно дайте ему SnippetType SurroundsWith, чтобы сделать фрагмент окружающего выделенного кода.
Для последней Visual Studio (в настоящее время 2017), фрагменты кода в документах Microsoft, а также Пошаговое руководство. Создание фрагмента кода.
Ответ 2
Оказывается, есть некоторые предопределенные идентификаторы, которые недостаточно хорошо документированы. В частности, для фрагментов типа SurroundWith существует идентификатор $selected $. Так, например, код для #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 \.
Ответ 3
Appart из полезных ответов выше, здесь Справочник схемы фрагментов кода, который полезен для определения допустимых значений для элементов фрагментов.
Ответ 4
Пример и некоторые советы (на основе предыдущих ответов) для VS2017:
Пример для фрагмента XML, но я предполагаю, что это будет применяться более или менее к любому языку.
- Вставьте код ниже в файл и сохраните его как example.snippet
- из VS do Tools- > Code Snippet Manager, выберите Язык XML, а затем My XML Snippets
- Нажмите "Импорт" и выберите example.snippet.
- Нажмите "Готово" и "ОК"
- В этот момент я перезапустил VS, но такие драконовские меры могут не потребоваться.
- В XML файле выберите текст, который вы хотите окружить, с помощью тегов para.
- Ctrl + K, Ctrl + S, выберите "Мои XML-фрагменты", а затем "Пример SurroundWith Snippet".
A <para> тег будет помещен перед вашим текстом и </para> после.
Если вы включаете завершающую новую строку, вы получаете дополнительную пустую строку после текста, а текст, следующий за конечным тегом, появляется в той же строке, что и конечный тег. Это имеет смысл, если вы думаете об этом.
Если вы выбираете только часть текста в строке, вы можете или не можете получить то, что ожидаете. Возможно, потребуется отредактировать фрагмент.
<?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. В частности, остерегайтесь заявлений о том, что делают ярлыки. Насколько я вижу, они ничего не полезят.