代码之家  ›  专栏  ›  技术社区  ›  angularsen Bcelik

通过点击tab键来编写C代码段

  •  4
  • angularsen Bcelik  · 技术社区  · 15 年前

    我创建的C代码段只能通过按Enter键结束,而内置代码段(如“struct”)则可以通过在自定义字段中切换来完成。

    这不是大问题,但很烦人。我尝试将结构片段的整个XML复制到自己的结构片段中,只替换快捷方式名称。即便如此,我还是必须按Enter键才能完成插入。

    你知道为什么会这样吗?其他人能复制这种行为吗?

    下面是我要写的代码片段:

    <?xml version="1.0" encoding="utf-8" ?>
    <CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
      <CodeSnippet Format="1.0.0">
        <Header>
      <Title>cmd</Title>
      <Shortcut>cmd</Shortcut>
      <Description>Code snippet for ICommand</Description>
      <Author>Andreas Larsen</Author>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>name</ID>
          <ToolTip>Command name</ToolTip>
          <Default>My</Default>
        </Literal>
      </Declarations>
      <Code Language="csharp"><![CDATA[public ICommand $name$Command
      {
      get
      {
        if (_$name$Command == null)
            _$name$Command = new DelegateCommand($name$);
        return _$name$Command;
      }
    }
    $end$]]>
      </Code>
     </Snippet>
    </CodeSnippet>
    </CodeSnippets>
    

    编辑: 正如Carl G所指出的,Visual Studio行为仅以Enter或Esc结束。以制表符结尾是一种重新分析活动模板行为。

    2 回复  |  直到 15 年前
        1
  •  3
  •   RichardOD    15 年前

    我只能在按下Enter/Escape键时获取要提交的结构片段,但不能获取选项卡。我不认为你想要达到的目标是可能的(或者说是明智的)。要完成代码段的约定是按Enter键或Escape键 this is the documented behaviour .

    做其他事情肯定是违反惯例的吗?当您使用参数化片段(如 对于 .选项卡允许您在满意您的决定之前多次修改值,然后按Enter键。

        2
  •  1
  •   angularsen Bcelik    15 年前

    我现在明白了。

    我使用的是Resharper加载项,它似乎有一个活动模板函数,可以覆盖Visual Studio的代码段。Resharper添加了一个功能,即选项卡可以用于在本机vs代码段以及其活动模板上完成代码段。

    当我将自定义代码片段转换为实时模板时,我得到了我想要的行为。 现在,我可以在每个字段中加制表符,并在执行过程中对它们进行更改,然后通过制表符跳过最后一个元素来完成这段代码。

    对于那些感兴趣的人,实时模板提供了一个功能更加丰富的代码片段功能。例如,您可以在字段上运行简单的宏,例如 当重用属性名称时,支持字段可以使用小写首字母(如果这是您的命名约定)。非常推荐艾丁,如果你能负担得起的话!