1. 程式人生 > >Sublime Text-Snippet的使用

Sublime Text-Snippet的使用

reg 開始 ets new script .py format field output

文章最初發表於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的使用