Sublime Text-Snippet的使用
文章最初發表於szhshp的第三邊境研究所
轉載請註明
Sublime Snippet
從大二開始就一直使用Sublime Text到現在,各方面都還滿意,也嘗試過使用Atom和其他的IDE依然感覺沒有ST順手。
正常情況插件裏面已經包含了所有你需要的Snippet,但是偶爾會有沒有插件裏面沒有覆蓋到的部分。
然後日常開發一直在用某偏門語言(ノ▼Д▼)ノ,並且幾年前對應的擴展插件就已經停止維護了,因此很多的關鍵字都沒能進行Snippet引用。
怎麽辦?
廢話!自己寫!
新建Snippet
首先新建一個Snippet: 菜單->Tools->Developer->New Snippet...
然後會獲得一段代碼:
<snippet>
<content><![CDATA[Type your snippet here]]></content>
<!-- Optional: Tab trigger to activate the snippet -->
<tabTrigger>hello</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>
這裏包含4個部分:
-
content:
其中必須包含<![CDATA[…]]>,否則無法工作, Type your snippet here用來寫你自己的代碼片段
註意裏面一些特殊字符可能需要使用轉義符號
-
tabTrigger:
用來引發代碼片段的字符或者字符串, 比如在以上例子上, 在編輯窗口輸入hello然後按下tab就會在編輯器輸出Type your snippet here這段代碼片段
-
scope:
表示你的代碼片段會在那種語言環境下激活, 比如上面代碼定義了source.python, 意思是這段代碼片段會在python語言環境下激活.
-
description :
展示代碼片段的描述, 如果不寫的話, 默認使用代碼片段的文件名作為描述
-
環境變量
點擊這裏查看所有環境變量列表
將環境變量插入content中就會輸出對應的值:
=================================
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
當你輸入一段snippet的時候,可能裏面有一些參數需要手動輸入,設置Filed就是為了方便後續參數的輸入
content中輸入下方代碼,然後使用這段Snippet的時候,就可以通過Tab鍵對下方編號位置的文字進行快速輸入
=================================
First Name: $1
Second Name: $2
Address: $3
=================================
Mirror Fields
可以將對應編號改為相同的,這樣可以快速選中多個位置並且輸入相同的字符
=================================
First Name: $1
Second Name: $1
Address: $1
=================================
Placeholder
沒啥好說的,就是給一些地方設置默認值
=================================
First Name: ${1:Guillermo}
Second Name: ${2:López}
Address: ${3:Main Street 1234}
User name: $1
Environment Variable : ${4:$TM_FILEPATH } #可以設置默認占位符為環境變量
Test: ${5:Nested ${6:Placeholder}}
=================================
Substitutions
某種類型的字符轉換
在content中使用以下格式的段落可以實現對字符串的轉換:
${var_name/regex/format_string/}
${var_name/regex/format_string/options}
下方是一個例子:
Original: ${1:Hey, Joe!}
Transformation: ${1/./=/g}
# Output:
Original: Hey, Joe!
Transformation: =========
其中定義了兩個mirror fields並且第一個field的默認值為 Hey, Joe!然後第二個被表達式轉換成了多個等於號
相關轉換參考: Boost library documentation for regular expressions
scope
可以從 : 菜單->Tools->Developer->Show Scope Name 中查看到需要操作的 Scope
參考文獻
- 手把手教你寫Sublime中的Snippet
- http://docs.sublimetext.info/en/latest/extensibility/snippets.html
- http://manual.macromates.com/en/scope_selectors
Sublime Text-Snippet的使用