前言:
我们在编写代码时,有时候为了省事儿,往往只需要在开发工具中输入for
后敲Tab
键时即可触发代码自动补全功能,在实际开发中非常好用。
由此,我们为什么不能开发出自己的一套代码快速不全的小功能呢?
这样以后只需要敲几个字符后,按一下Tab
键即可快速生成我们自定义的模板,可大大降低重复性的工作。
参考源码路径:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC#\Snippets\2052\Visual C#\
标准示例
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>for</Title>
<Shortcut>for</Shortcut>
<Description>for 循环的代码片段</Description>
<Author>Microsoft Corporation</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>index</ID>
<Default>i</Default>
<ToolTip>索引</ToolTip>
</Literal>
<Literal>
<ID>max</ID>
<Default>length</Default>
<ToolTip>最大长度</ToolTip>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[for (int $index$ = 0; $index$ < $max$; $index$++)
{
$selected$ $end$
}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
相关学习文档.
http://www.cnblogs.com/anderslly/archive/2009/02/16/vs2008-code-snippets.html
需要注意的点:
- 把代码包含在
<![CDATA[ ]]>
中,因为代码很可能会包含一些特殊字符。 - 操作方法:输入
节中的代码简写单词后,按一次Tab键,即可直接打出代码片段,继续点击Tab键可在 $
包含的英文单词中(如:index,max)进行切换修改,按下回车键后,默认代码片段修改完成,且光标回到$end$位置。 - 被
$
包裹的可修改单词必须要加在节点下的 <Literal>
节点中,并维护其中的值。 - 相同的
$
包裹单词,如:$index$,只要其中一个被修改,其他的也会跟着变。 - 文件后缀名为: .snippet
编写自己的代码片段
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>ifcont</Title>
<Shortcut>ifcont</Shortcut>
<Description>if 语句的代码片段</Description>
<Author>Lovebin</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Code Language="csharp"><![CDATA[if ($entity$.Contains("$new_b$"))
{
$selected$ $end$
}]]>
</Code>
<Declarations>
<Literal>
<ID>entity</ID>
<ToolTip>实体表</ToolTip>
<Default>entity</Default>
</Literal>
<Literal>
<ID>new_b</ID>
<ToolTip>字段</ToolTip>
<Default>new_b</Default>
</Literal>
</Declarations>
</Snippet>
</CodeSnippet>
<CodeSnippet Format="1.0.0">
<Header>
<Title>Getstring</Title>
<Shortcut>Getstring</Shortcut>
<Description>代码片段string</Description>
<Author>Lovebin</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Code Language="csharp"><![CDATA[$entity$.GetAttributeValue<string>("$filedname$");$end$]]>
</Code>
<Declarations>
<Literal>
<ID>filedname</ID>
<ToolTip>字段</ToolTip>
<Default>filedname</Default>
</Literal>
<Literal>
<ID>entity</ID>
<ToolTip>实体表</ToolTip>
<Default>entity</Default>
</Literal>
</Declarations>
</Snippet>
</CodeSnippet>
.....
</CodeSnippets>