Visual Studioでは、スニペットを挿入してリテラルの挿入を終了すると、カーソルがスニペットの先頭にジャンプします。
それでは、後でカーソルをどこに置くべきかをVisualStudioに伝えたいと思います。私はウェブを検索しましたが、実際にこれが可能になることはほとんど期待できません。
説明のために、次のスニペットがあるとします。
<Code Language="csharp" Kind="method body" Delimiter="$"><![CDATA[this.SyncThreadRunInvoke(() =>
{
});]]>
</Code>
次に挿入後:
this.SyncThreadRunInvoke(() =>
{
[]<- I want the cursor here
});
次のc#の「if」スニペットに示すように、$ end $変数を使用します。
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.Microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>if</Title>
<Shortcut>if</Shortcut>
<Description>Code snippet for if statement</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>expression</ID>
<ToolTip>Expression to evaluate</ToolTip>
<Default>true</Default>
</Literal>
</Declarations>
<Code Language="csharp"><![CDATA[if ($expression$)
{
$selected$ $end$
}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>