Sublime Text 2 代码片断
原文:Snippets
不管是在編碼,還是寫暢銷書,你都可能會需要一遍又一遍的用到一些文本的小片斷。使用片斷來結(jié)束這種單調(diào)無聊的碼字吧,片斷是一種智能的模板,它能在合適的上下文中插入你需要的文本內(nèi)容。
創(chuàng)建一個新的片斷,選擇 Tools | New Snippet... Sublime Text 將為你生成一個片斷的基本的骨架。
片斷可以保存在任何的包文件夾中,但為了簡單起見,你可以保存在 Packages/User 文件夾下。
格式
通常的片斷存在于某一個 Sublime Text 的包中。它們是一些以 sublime-snippet 為擴(kuò)展名的簡單的 XML 文件。舉例來說,你可以在 Email 包下面創(chuàng)建一個 greeting.sublime-snippet 的片斷。
典型的版本的結(jié)構(gòu)如下(包含默認(rèn)提示):
1 <snippet> 2 <content><![CDATA[Type your snippet here]]></content> 3 <!-- Optional: Tab trigger to activate the snippet --> 4 <tabTrigger>xyzzy</tabTrigger> 5 <!-- Optional: Scope the tab trigger will be active in --> 6 <scope>source.python</scope> 7 <!-- Optional: Description to show in the menu --> 8 <description>My Fancy Snippet</description> 9 </snippet>snippet 中包含了所有 Sublime Text 需要的信息,插入什么、是否插入、何時插入。
content
實(shí)際插入的內(nèi)容,代碼片斷可以從簡單到非常復(fù)雜,接下來的例子我們會看到。
在創(chuàng)建自定義的代碼片斷的時候,需要注意以下:
a、如果想得到字符 $?,必須進(jìn)行轉(zhuǎn)義:\$
b、如果片斷中包含縮進(jìn),統(tǒng)一使用 tab。插入片斷的時候,如果 translateTabsToSpaces 選項(xiàng)打開,會自動將 tab 轉(zhuǎn)換成 space
文本內(nèi)容必須包含在 <![CDTAT[...]]> 中,否則將失效。
tabTrigger
定義了一個觸發(fā)插入片斷的字符序列,當(dāng)輸入該序列后,按下 tab 鍵將插入片斷。
tab 是隱含的綁定,不需要特意指定。
scope
定義了該片斷的作用域,也就是只有在指定的擴(kuò)展名的文件里面才會生效。更多信息請戳:Scopes。
description
將會顯示在片斷的上下文菜單中,如果留空,將默認(rèn)顯示該片斷的文件名。
通過以上內(nèi)容,已經(jīng)可以開始寫一個自己的代碼片斷了。
特性
環(huán)境變量
片斷可以從環(huán)境變量中訪問上下文件信息。Sublime Text 會自動給以下列出來的變量賦值。
當(dāng)然你也可以進(jìn)行擴(kuò)展,加入自己的變量。自定義的變量需要定義在 .sublime-options 文件中。
| $PARAM1, $PARAM2… | 傳給 insert_snippet?命令的參數(shù) |
| $SELECTION | 片斷觸發(fā)后將被選中? |
| $TM_CURRENT_LINE | 片斷觸發(fā)后光標(biāo)所在行的內(nèi)容 |
| $TM_CURRENT_WORD | 片斷觸發(fā)后光標(biāo)所在單詞? |
| $TM_FILENAME | 文件名(包含擴(kuò)展名) |
| $TM_FILEPATH | 文件路徑 |
| $TM_FULLNAME | 電腦用戶名 |
| $TM_LINE_INDEX | 片斷觸發(fā)時光標(biāo)所在的列,從0算起 |
| $TM_LINE_NUMBER | 片斷觸發(fā)時光標(biāo)所在的行,從1算起 |
| $TM_SELECTED_TEXT | 同 $SELECTION |
| $TM_SOFT_TABS | 如果 translate_tabs_to_spaces 為 true 時 YES,否則 NO |
| $TM_TAB_SIZE | 每個 tab 需要的 space 數(shù)量,由 tab_size 控制 |
?
看幾個使用了變量的片斷例子:
字段
在字段的標(biāo)記下,你可以通過按 tab 鍵依次的在代碼片斷中跳轉(zhuǎn)位置。字段的作用就是當(dāng)你插入片斷的時候幫助你完成個性化的設(shè)置。
First Name: $1 Second Name: $2 Address: $3以上的例子中,當(dāng)你按下 tab 后光標(biāo)會跳到 $1 的位置。當(dāng)?shù)诙伟?tab,將跳轉(zhuǎn)到 $2,依此類推。當(dāng)然,你也可以按 shift+tab 來返回上一個位置。如果在按完最高的那個 tab 之后再按 tab,Sublime Text 將把光標(biāo)定位到片斷內(nèi)容的最后,這樣你就可以進(jìn)入普通的編輯模式了。
如果你想控制最后的定位點(diǎn)的位置,使用 $0 來標(biāo)記。
可以在任何時間,通過按 Esc 退出字段的循環(huán)。
鏡像字段
相同的字段將互相標(biāo)記為鏡像字段:當(dāng)你編輯第一個的時候,剩下的地方將被填充同樣的內(nèi)容,也就是在相同的字段的位置都會出現(xiàn)光標(biāo),所以接下來的輸入對所有字段位置都有效。
First Name: $1 Second Name: $2 Address: $3 User name: $1在這個例子中,“User name” 后面的位置將被填充為和 “First Name” 后面位置一樣的值。
占位符
稍微擴(kuò)展一下字段的語法,你就可以為一個字段定義一個默認(rèn)值。當(dāng)你的有一個比較通用的代碼片斷,但同時你又想很方便的自定義的時候,占位符就非常有用。
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}}替換
除占位的語法外,還可以通過替換來執(zhí)行更復(fù)雜的操作。使用替換來動態(tài)的生成文本。
替換的語法如下:
${var_name/regex/format_string/} ${var_name/regex/format_string/options}var_name
變量名:1,2,3...
regex
Perl 風(fēng)格的正則表達(dá)式。更多請戳:Boost library reference for regular expressions
format_string
戳上面那個鏈接
options
可選的。可以是以下的任意一種:i 不區(qū)分大小寫、g 替換全局、m 匹配多行
通過替換功能,以下例子中,輕松的得到下劃線:
Original: ${1:Hey, Joe!} Transformation: ${1/./=/g}# Output:Original: Hey, Joe! Transformation: =========獲取當(dāng)前文件名(不包含擴(kuò)展名):
<snippet><content><![CDATA[ using UnityEngine; using System.Collections;public class ${TM_FILENAME/(.+)\..+/$1/} : MonoBehaviour {// Use this for initializationvoid Start() {${1}}// Update is called once per framevoid Update() {}}]]></content><tabTrigger>ucs</tabTrigger><description>Unity Class</description><scope>source.cs</scope> </snippet>?
?
轉(zhuǎn)載于:https://www.cnblogs.com/yili16438/p/3734343.html
總結(jié)
以上是生活随笔為你收集整理的Sublime Text 2 代码片断的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSH三大框架注解整合(二)
- 下一篇: 《Effective C++》item2