翻譯自sublime官網(wǎng)doc
Sublime Snippets
Snippets(片段)
無(wú)論你在寫代碼還是下一本暢銷書吸血鬼日記灌侣,一定會(huì)需要一些固定格式的文字。使用Snippets來(lái)保存乏味的文字。 Snippets是智能的模板俯萌,它會(huì)適應(yīng)上下文并替你插入文本崇棠。
創(chuàng)建一個(gè)新的片段,選擇Tools->Developer->New Snippet... Sublime Text會(huì)提供一個(gè)框架來(lái)創(chuàng)建新的片段
片段可以存儲(chǔ)在任意包的文件夾下讹开,但為簡(jiǎn)單起見盅视,你可以將它們保存在你的Packages/User
文件夾下。
Snippets File Format(片段文件格式)
片段通常在一個(gè)sublime text
包中旦万。它們是簡(jiǎn)化了的以sublime-snippet
為后綴的xml
文件闹击。比如,你可以再Email的package中有一個(gè)名為greeting.sublime-snippet
的片段文件成艘。
典型的片段結(jié)構(gòu)如下(包括Sublime Text
為了方便插入的默認(rèn)提示):
<snippet>
<content><![CDATA[Type your snippet here]]></content>
<!-- Optional: Tab trigger to activate the snippet -->
<tabTrigger>xyzzy</tabTrigger>
<!-- Optional: Scope the tab trigger will be active in -->
<scope>source.python</scope>
<!-- Optional: Description to show in the menu -->
<description>My Fancy Snippet</description>
</snippet>
snippet
元素包含了Sublime Text
所需的插入什么拇砰,是否插入,何時(shí)插入的全部信息狰腌,下面依次解釋各個(gè)元素除破。
content
content
是實(shí)際插入的內(nèi)容,片段可以是簡(jiǎn)單的模板琼腔,也可以是相當(dāng)復(fù)雜的模板瑰枫,后面我們會(huì)講解這兩種模板。
當(dāng)新建自己的片段時(shí)丹莲,遵循以下:
- 如果片段中有字符 $光坝,必須使用\轉(zhuǎn)義:$
- 如果片段中包含縮排,使用tabs即可甥材。如果選項(xiàng)
translateTabsToSpaces
被設(shè)置為true
盯另,當(dāng)片段被插入時(shí)tabs會(huì)被轉(zhuǎn)換為空格。
片段內(nèi)容必須使用<![CDATA[...]]
包含洲赵,否則片段將不會(huì)有效
tabTrigger
tabTrigger
定義了觸發(fā)插入片段的鍵序列鸳惯。當(dāng)輸入完觸發(fā)字符并且按Tab
鍵時(shí)商蕴,片段會(huì)立即生效
tab 出發(fā)鍵是隱含的鍵綁定
scope
范圍選擇器決定了片段會(huì)被激活的上下文,查看Scopes了解更多信息芝发。通常绪商,可以查看當(dāng)前文檔的scope,使用Tools->Develper->Show Scope Name辅鲸,以下是看看python文件的scope:
description
當(dāng)在Snippets菜單中展示時(shí)格郁,會(huì)顯示片段的描述。如果沒有指定描述独悴,Sublime Text
會(huì)默認(rèn)展示片段的名字
了解了以上信息例书,就可以開始編寫自己的片段了
Note
為簡(jiǎn)單起見,我們?cè)诶又兄话?code>content元素的文本刻炒,除非另有說明
Snippet Features (片段特色)
Environment Variables(環(huán)境變量)
片段可以通過環(huán)境變量的形式訪問上下文信息雾叭。Sublime Text
自動(dòng)設(shè)置以下變量的值÷潋可以添加自定義的變量來(lái)提供額外的信息织狐,這些自定義的變量被定義在.sublime-options
文件中。
$PARAM1 , $PARAM2
|
傳遞給inset_snippet命令的參數(shù)(本文不介紹) |
---|---|
$SELECTION |
當(dāng)片段被觸發(fā)時(shí)選中的文本 |
$TM_CURRENT_LINE |
當(dāng)片段被觸發(fā)時(shí)光標(biāo)所在行的內(nèi)容 |
$TM_CURRENT_WORD |
當(dāng)片段被觸發(fā)時(shí)光標(biāo)所在單詞的內(nèi)容 |
$TM_FILENAME |
當(dāng)前被編輯文件的名字筏勒,包括擴(kuò)展名 |
$TM_FILEPATH |
當(dāng)前被編輯文件路徑 |
$TM_FULLNAME |
用戶的用戶名 |
$TM_LINE_INDEX |
片段被插入的列移迫,列從0開始 |
$TM_LINE_NUMBER |
片段被插入的行,行從1開始 |
$TM_SELECTED_TEXT |
$SELECTION 的別名 |
$TM_SOFT_TABS |
當(dāng)translate_tabs_to_spaces 為true 時(shí)管行,值為YES ,否則為NO
|
$TM_TAB_SIZE |
pre-tab的空格數(shù)(由tab_size 選項(xiàng)控制) |
以下是使用變量的片段的示例:
====================================
USER NAME: $TM_FULLNAME
FILE NAME: $TM_FILENAME
TAB SIZE: $TM_TAB_SIZE
SOFT TABS: $TM_SOFT_TABS
====================================
# Output:
====================================
USER NAME: guillermo
FILE NAME: test.txt
TAB SIZE: 4
SOFT TABS: YES
====================================
Fields(區(qū)段)
使用區(qū)段標(biāo)識(shí)厨埋,可以通過按tab
鍵的方式在片段中循環(huán)選項(xiàng)。當(dāng)片段被插入時(shí)捐顷,區(qū)段可以用來(lái)在片段的定制字段中間跳轉(zhuǎn)荡陷。
First Name: $1
Second Name: $2
Address: $3
在上面的例子中,按tab
鍵一次迅涮,光標(biāo)會(huì)調(diào)到$1
的位置废赞,按tab
第二次,光標(biāo)會(huì)前進(jìn)到$2
的位置叮姑。也可以使用Shift+Tab
鍵回到上一個(gè)位置唉地。當(dāng)高粱的tab停靠位置已經(jīng)結(jié)束传透,再按tab
鍵Sublime Text
會(huì)將光標(biāo)移動(dòng)到片段結(jié)束的位置耘沼,以便于回復(fù)正常編輯
如果希望控制tab
的退出出口,使用$0
標(biāo)識(shí)
可以隨時(shí)使用Esc
鍵退出循環(huán)模式
Mirrored Fields(鏡像區(qū)段)
相同的區(qū)段標(biāo)志彼此反射:當(dāng)編輯其中一個(gè)的時(shí)候朱盐,其余相同的區(qū)段會(huì)實(shí)時(shí)地被相同的值填充群嗤。
First Name: $1
Second Name: $2
Address: $3
User name: $1
以上是例子,User name
會(huì)被與First Name
相同的值填充
Place Holders(占位符)
將區(qū)段語(yǔ)法做一點(diǎn)點(diǎn)擴(kuò)展兵琳,可以定義區(qū)段的默認(rèn)值狂秘。當(dāng)片段的區(qū)段有一個(gè)一般情況的值時(shí)骇径,使用占位符定義默認(rèn)值的同時(shí)課可以保證區(qū)段值自定義的便利性。
First Name: ${1:Guillermo}
Second Name: ${2:López}
Address: ${3:Main Street 1234}
User name: $1
變量可以被使用作為占位符:
First Name: ${1:Guillermo}
Second Name: ${2:López}
Address: ${3:Main Street 1234}
User name: ${4:$TM_FULLNAME}
占位符可以嵌套:
Test: ${1:Nested ${2:Placeholder}}
PS
初次翻譯赃绊,如有誤請(qǐng)見諒 _