Есть ли способ создать фрагмент "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. В частности, остерегайтесь заявлений о том, что делают ярлыки. Насколько я вижу, они ничего не полезят.