代码段快捷方式无处不在

时间:2015-10-01 16:28:24

标签: c# .net visual-studio visual-studio-2013 code-snippets

我有一个代码段string.Format(@""),其中包含一个快捷方式sf,用于插入代码段并将光标放在两个双引号之间。真的很方便。我当然可以正常使用它,只需输入sf并点击两次标签:

enter image description here

但是,我刚刚发现快捷方式在所有位置都不起作用。例如,如果我正在构建此声明:

if(true) throw new FormatException() // <-- cursor is inside these parens

然后我点击了sf,快捷方式没有出现在intellisense菜单中,如果我点击 Tab 两次,它就不会生成片段。为什么呢?

我试过搜索“C#代码段快捷键有时不起作用”,“C#代码段快捷方式不起作用”,“Visual Studio代码段有时不起作用”等等,我不能找到任何有用的东西。

编辑:以下是代码段定义:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
      <Title>String.Format with @</Title>
      <Author>Rory</Author>
      <Description>
      </Description>
      <HelpUrl>
      </HelpUrl>
      <Shortcut>sf</Shortcut>
    </Header>
    <Snippet>
      <Declarations>
        <Literal Editable="true">
          <ID>anchor</ID>
          <ToolTip>
          </ToolTip>
          <Default>
          </Default>
          <Function>
          </Function>
        </Literal>
      </Declarations>
      <Code Language="csharp" Delimiter="$" Kind="method body"><![CDATA[string.Format(@"$selected$$end$")]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

2 个答案:

答案 0 :(得分:2)

根据docs Kind属性确定您可以使用该片段的位置 - 您已指定&#34;方法正文&#34;你应该指定&#34;任何&#34;

答案 1 :(得分:1)

我刚刚创建并测试了(在VS2013和VS2015中)我自己的代码片段,它按预期工作:

enter image description here

这就是它的样子:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
      <Title>SnippetFile1</Title>
      <Author>me@example.com</Author>
      <Description>
      </Description>
      <HelpUrl>
      </HelpUrl>
      <Shortcut>sf</Shortcut>
    </Header>
    <Snippet>
      <Code Language="csharp" Delimiter="$"><![CDATA[string.Format(@"$end$")]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

用于创建和编辑代码段the Snippet Designer is a must have