Visual Studio代码片段光标

61

在Visual Studio中,当您插入代码片段并完成字面值的插入后,光标会跳到代码片段的开头。

现在我想告诉Visual Studio光标应该在哪里继续移动。我已经在网上搜索过了,实际上对此并不抱有太大的希望。

为了说明,假设我有以下代码片段:

<Code Language="csharp" Kind="method body" Delimiter="$"><![CDATA[this.SyncThreadRunInvoke(() =>
            {

            });]]>
    </Code>

然后插入数据后:

this.SyncThreadRunInvoke(() =>
            {
            []<- I want the cursor here
            });
1个回答

94

在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>

9
我猜也许你正在寻找的是 $end$ 这个东西。 - Henrik Söderlund
1
是的,我现在已经尝试过了,你肯定想要 $end$。不过有一个小问题:如果你正在创建一个将现有代码用新代码包围起来的片段,例如花括号或其他内容,那么以下内容似乎对我来说是合理的,它会将光标放置在被包围代码之后: $selection$ $end$ 但实际上并不是这样。它会将光标立即放置在被包围代码之前。 - Henrik Söderlund
没错,这就是诀窍。而且我不需要包围代码,所以对我来说没有问题。谢谢! - Stormenet
@Henrik Söderlund - 如果您写"$selected$$end$",光标将立即放置在正文之前,就像您所说的那样。但是如果您在两者之间插入一个空格,即写"$selected$ $end$",则光标最终会出现在代码后面。我不知道为什么,而且它会在代码后面创建一个令人烦恼的空格。 - haagel
@haagel:这是个不错的技巧,只是空格有点烦人。 - Henrik Söderlund
1
有人有关于代码片段文档的参考资料吗?我想学习更多。同时,我还有以下开放性问题:http://stackoverflow.com/questions/21701369/unassigned-shortcut-for-sql-code-snippet - whytheq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接