Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写以点击TAB键结束的C#代码段_C#_Visual Studio_Visual Studio 2008_Code Snippets - Fatal编程技术网

编写以点击TAB键结束的C#代码段

编写以点击TAB键结束的C#代码段,c#,visual-studio,visual-studio-2008,code-snippets,C#,Visual Studio,Visual Studio 2008,Code Snippets,我创建的C#代码段只能通过按Enter键来结束,而内置代码段(如“struct”)可以通过在自定义字段中切换来完成 这不是什么大问题,但很烦人。我尝试将结构片段的整个XML复制到我自己的XML中,只替换快捷方式名称。尽管如此,我还是必须按Enter键才能完成插入 你知道为什么会这样吗?其他人能复制这种行为吗 以下是我正在尝试编写的代码片段: <?xml version="1.0" encoding="utf-8" ?> <CodeSnippets xmlns="http://

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

这不是什么大问题,但很烦人。我尝试将结构片段的整个XML复制到我自己的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>

指令
指令
ICommand的代码段
安德烈亚斯·拉森
膨胀
名称
命令名
我的


编辑:
正如Carl G所指出的,VisualStudio行为仅通过ENTER或ESC结束。按TAB结束是一种ReSharper活动模板行为。

我只能在按enter/escape键时提交结构片段,而不能使用TAB键。我认为你想要实现的目标是不可能的(或者说是不明智的)。要完成代码段的约定是按enter键或escape键

做其他事情肯定是违反惯例?当您使用参数化的代码段(如for)时,您可以看到为什么约定很有用。选项卡允许您在满意您的决定并按enter键之前多次修改这些值。

我现在明白了

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

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

对于那些感兴趣的人来说,live templates提供了功能更丰富的代码段功能。例如,您可以在字段上运行简单的宏,例如
重复使用属性名称时,支持字段的首字母可以小写(如果这是您的命名约定的话)。如果你负担得起,非常推荐addin

我想你是对的,但是如果我有多个字段,我想通过制表符来完成它们,保持制表符来完成代码片段是非常方便的。特别是因为内置代码段也支持这一点,所以对我来说,这已成为一种自然行为。代码段如何知道在选项卡上完成?我使用的所有选项都允许您在字段之间进行制表,当您到达最后一个字段并再次按tab键时,它将返回到第一个字段。我只见过enter或escape终止代码段。您可能会发现,使用类似这样的工具更容易,如果您在问题中或Visual Studio内置代码段不以制表符结尾的地方澄清一下,对那些迟到的用户会有所帮助。只有ReSharper片段通过tab结束。因此,您的问题没有答案,除非您包括或回答者猜测您也安装了ReSharper。谢谢,我对问题进行了澄清。