编写以点击TAB键结束的C#代码段
我创建的C#代码段只能通过按Enter键来结束,而内置代码段(如“struct”)可以通过在自定义字段中切换来完成 这不是什么大问题,但很烦人。我尝试将结构片段的整个XML复制到我自己的XML中,只替换快捷方式名称。尽管如此,我还是必须按Enter键才能完成插入 你知道为什么会这样吗?其他人能复制这种行为吗 以下是我正在尝试编写的代码片段:编写以点击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://
<?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。谢谢,我对问题进行了澄清。