Visual Studio 2010で「サラウンドウィズ」スニペットを作成する方法はありますか?置換タイプのスニペットを作成する方法を知っています。スニペットを使用した単純なサラウンドは、テキストのブロックをasp:hyperlinkで囲むことができます。デフォルトの「surroundwith」スニペットがコードのブロックをasp:panelで囲むことができる方法と同様です。
creating snippets に関するMSDNの記事をご覧ください。それはあなたに良いスタートを与えるでしょう。スニペットを作成するときは、SnippetTypeにSurroundsWith
を指定して、選択したコードをスニペットで囲むようにしてください。
最新のVisualStudio(現在は2017年)には、 Microsoftドキュメントのコードスニペット と チュートリアル:コードスニペットの作成 があります。
十分に文書化されていない事前定義されたIDがいくつかあることが判明しました。具体的にはSurroundWithタイプのスニペットの場合、ID $ selected $があります。したがって、たとえば、#ifスニペットのコードは次のとおりです。
...
<Code Language="csharp">
<![CDATA[#if $expression$ $selected$ $end$ #endif]]>
</Code>
...
$ end $ IDは、サラウンド機能が完了したときにカーソルを置く場所を示します。それが本当にすべてです。もちろん、SnippetTypeとしてSurroundsWithを含めることを忘れないでください
その他の例については、C:\ Program Files\Microsoft Visual Studio 10.0 \\ Snippets\1033 \にある定義済みのスニペットをご覧ください。
VS2017の例といくつかのアドバイス(以前の回答に基づく):
この例はXMLスニペット用ですが、これは多かれ少なかれどの言語にも当てはまると思います。
<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ツールチームにとって実装が異常であると言うように制限します。特に、ショートカットが何をするかについての主張に注意してください。私が見る限り、彼らは何の役にも立ちません。
上記の有用な回答とは別に、ここに コードスニペットスキーマリファレンス があります。これは、スニペット要素の有効な値を把握するのに役立ちます。