前言 工作中經常會寫一些重覆的代碼片段,如自動屬性、for迴圈、Action等等,針對這種情況,VisualStudio已經給我們提供了一個非常方便的功能——代碼片段,是我們可以簡單的輸入幾個字母就能生成大段代碼。 但是,工作中總會遇到一些重覆代碼是VisualStudio沒有提供的,這時就需要我們 ...
前言
工作中經常會寫一些重覆的代碼片段,如自動屬性、for迴圈、Action等等,針對這種情況,VisualStudio已經給我們提供了一個非常方便的功能——代碼片段,是我們可以簡單的輸入幾個字母就能生成大段代碼。
但是,工作中總會遇到一些重覆代碼是VisualStudio沒有提供的,這時就需要我們自己去編寫片段模板了,本文我將簡單講一下如何創建並使用自己的代碼片段。
一、模板文件在哪
在工具-代碼片段管理器(快捷鍵Ctrl+K,B)可以打開代碼片段管理器,如下圖:
選擇模板所屬語言,之後就可以看到該語言所擁有的分組,點開分組就可以看到組內的片段模板了,如下圖:
在這裡就可以看到模板所在的路徑了
從資源管理器進入該路徑就可以看到尾碼名為Snippet的模板文件了,該文件本質為XML文件,可以直接用VS或記事本打開編輯。
二、模板文件格式
打開後的模板文件是這樣的(這裡以for為例),各個節點對應的含義我做出了備註
1 <?xml version="1.0" encoding="utf-8"?> 2 <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 3 <CodeSnippet Format="1.0.0"> 4 <Header> 5 <Title>for</Title> <!--顯示在提示界面及管理器中的標題--> 6 <Shortcut>for</Shortcut> <!--調用時的快捷代碼及管理器中的快捷方式--> 7 <Description>for 迴圈的代碼片段</Description> <!--顯示在提示界面及管理器中的描述--> 8 <Author>Microsoft Corporation</Author> <!--顯示管理器中的作者信息--> 9 <SnippetTypes> <!--顯示管理器中的片段類型,這段一般只保留Expansion即可--> 10 <SnippetType>Expansion</SnippetType> <!--擴展類型,基本所有片段模板均包含此類型--> 11 <SnippetType>SurroundsWith</SnippetType> <!--外側代碼,可在游標所在代碼外圍插入該代碼塊,快捷鍵Ctrl+K,S--> 12 <!--有的模板還是Refactoring類型,該類型沒有快捷鍵,也不包含Expansion類型,我們這裡不多說明瞭--> 13 </SnippetTypes> 14 </Header> 15 <Snippet> 16 <Declarations> <!--模板變數--> 17 <Literal> 18 <ID>index</ID> <!--變數ID,在模板中通過$ID$的方式調用--> 19 <Default>i</Default> <!--變數預設值--> 20 <ToolTip>索引</ToolTip> <!--焦點在變數上時變數的註釋--> 21 </Literal> 22 <Literal> 23 <ID>max</ID> 24 <Default>length</Default> 25 <ToolTip>最大長度</ToolTip> 26 </Literal> 27 </Declarations> 28 <!--下麵是模板內容--> 29 <Code Language="csharp"><![CDATA[for (int $index$ = 0; $index$ < $max$; $index$++) 30 { 31 $selected$ $end$ 32 }]]> 33 </Code> 34 </Snippet> 35 </CodeSnippet> 36 </CodeSnippets>
我們創建模板時可以直接導出一份VS自帶的模板進行更改,代碼主體寫在Code標記處,用<![CDATA[和]]>括起來
我們可以看到,上面的模板中還有兩個標識並沒有在Declarations中聲明,分別如下
$selecteds$ 因為該代碼片段是擴展類型,編碼時可在當前選定代碼外圍添加(Ctrl+K,S),故此標識代表當前所選代碼
$end$ 此標識表示結束時(變數調整好後按Enter或者沒變數片段的初始)游標所處位置
三、模板文件導入
這個就簡單了,將編輯好的模板直接拷貝到系統模板所在的路徑下就可以了。
作者:Vulper
歡迎轉載,轉載請註明出處!