web-dev-qa-db-ja.com

Visual Studio 2010で「サラウンドウィズ」タイプのスニペットを作成するにはどうすればよいですか?

Visual Studio 2010で「サラウンドウィズ」スニペットを作成する方法はありますか?置換タイプのスニペットを作成する方法を知っています。スニペットを使用した単純なサラウンドは、テキストのブロックをasp:hyperlinkで囲むことができます。デフォルトの「surroundwith」スニペットがコードのブロックをasp:panelで囲むことができる方法と同様です。

37
FiveTools

creating snippets に関するMSDNの記事をご覧ください。それはあなたに良いスタートを与えるでしょう。スニペットを作成するときは、SnippetTypeにSurroundsWithを指定して、選択したコードをスニペットで囲むようにしてください。

最新のVisualStudio(現在は2017年)には、 Microsoftドキュメントのコードスニペットチュートリアル:コードスニペットの作成 があります。

25
user203570

十分に文書化されていない事前定義された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 \にある定義済みのスニペットをご覧ください。

36
DiamondBack

VS2017の例といくつかのアドバイス(以前の回答に基づく):

この例はXMLスニペット用ですが、これは多かれ少なかれどの言語にも当てはまると思います。

  1. 以下のコードをファイルに貼り付け、example.snippetとして任意の場所に保存します
  2. vS do Tools-> Code Snippet Managerから、Language of XMLを選択し、次にMy XMLSnippetsを選択します。
  3. [インポート]をクリックして、example.snippetを選択します。
  4. [完了]をクリックして[OK]をクリックします
  5. この時点で私はVSを再起動しましたが、そのような厳格な対策は必要ないかもしれません。
  6. XMLファイルで、paraタグで囲むテキストを選択します。
  7. Ctrl + K、Ctrl + S、[マイXMLスニペット]、[SurroundWithスニペットの例]の順に選択します。

<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ツールチームにとって実装が異常であると言うように制限します。特に、ショートカットが何をするかについての主張に注意してください。私が見る限り、彼らは何の役にも立ちません。

5
mikemay

上記の有用な回答とは別に、ここに コードスニペットスキーマリファレンス があります。これは、スニペット要素の有効な値を把握するのに役立ちます。

1
mimo