zoukankan      html  css  js  c++  java
  • Sublime Text 2 代码片断

    原文:Snippets

    不管是在编码,还是写畅销书,你都可能会需要一遍又一遍的用到一些文本的小片断。使用片断来结束这种单调无聊的码字吧,片断是一种智能的模板,它能在合适的上下文中插入你需要的文本内容。

    创建一个新的片断,选择 Tools | New Snippet... Sublime Text 将为你生成一个片断的基本的骨架。

    片断可以保存在任何的包文件夹中,但为了简单起见,你可以保存在 Packages/User 文件夹下。

    格式

    通常的片断存在于某一个 Sublime Text 的包中。它们是一些以 sublime-snippet 为扩展名的简单的 XML 文件。举例来说,你可以在 Email 包下面创建一个 greeting.sublime-snippet 的片断。

    典型的版本的结构如下(包含默认提示):

    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

    实际插入的内容,代码片断可以从简单到非常复杂,接下来的例子我们会看到。

    在创建自定义的代码片断的时候,需要注意以下:

    a、如果想得到字符 $ ,必须进行转义:$

    b、如果片断中包含缩进,统一使用 tab。插入片断的时候,如果 translateTabsToSpaces 选项打开,会自动将 tab 转换成 space

    文本内容必须包含在 <![CDTAT[...]]> 中,否则将失效。

    tabTrigger

    定义了一个触发插入片断的字符序列,当输入该序列后,按下 tab 键将插入片断。

    tab 是隐含的绑定,不需要特意指定。

    scope

    定义了该片断的作用域,也就是只有在指定的扩展名的文件里面才会生效。更多信息请戳:Scopes

    description

    将会显示在片断的上下文菜单中,如果留空,将默认显示该片断的文件名。

    通过以上内容,已经可以开始写一个自己的代码片断了。

    特性

    环境变量

    片断可以从环境变量中访问上下文件信息。Sublime Text 会自动给以下列出来的变量赋值。

    当然你也可以进行扩展,加入自己的变量。自定义的变量需要定义在 .sublime-options 文件中。

    $PARAM1, $PARAM2… 传给 insert_snippet 命令的参数
    $SELECTION 片断触发后将被选中 
    $TM_CURRENT_LINE 片断触发后光标所在行的内容
    $TM_CURRENT_WORD 片断触发后光标所在单词 
    $TM_FILENAME 文件名(包含扩展名)
    $TM_FILEPATH 文件路径
    $TM_FULLNAME 电脑用户名
    $TM_LINE_INDEX 片断触发时光标所在的列,从0算起
    $TM_LINE_NUMBER 片断触发时光标所在的行,从1算起
    $TM_SELECTED_TEXT 同 $SELECTION
    $TM_SOFT_TABS 如果 translate_tabs_to_spaces 为 true 时 YES,否则 NO
    $TM_TAB_SIZE 每个 tab 需要的 space 数量,由 tab_size 控制

     
    看几个使用了变量的片断例子:

    ====================================
    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
    ====================================

    字段

    在字段的标记下,你可以通过按 tab 键依次的在代码片断中跳转位置。字段的作用就是当你插入片断的时候帮助你完成个性化的设置。

    First Name: $1
    Second Name: $2
    Address: $3

    以上的例子中,当你按下 tab 后光标会跳到 $1 的位置。当第二次按 tab,将跳转到 $2,依此类推。当然,你也可以按 shift+tab 来返回上一个位置。如果在按完最高的那个 tab 之后再按 tab,Sublime Text 将把光标定位到片断内容的最后,这样你就可以进入普通的编辑模式了。

    如果你想控制最后的定位点的位置,使用 $0 来标记。

    可以在任何时间,通过按 Esc 退出字段的循环。

    镜像字段

    相同的字段将互相标记为镜像字段:当你编辑第一个的时候,剩下的地方将被填充同样的内容,也就是在相同的字段的位置都会出现光标,所以接下来的输入对所有字段位置都有效。

    First Name: $1
    Second Name: $2
    Address: $3
    User name: $1

    在这个例子中,“User name” 后面的位置将被填充为和 “First Name” 后面位置一样的值。

    占位符

    稍微扩展一下字段的语法,你就可以为一个字段定义一个默认值。当你的有一个比较通用的代码片断,但同时你又想很方便的自定义的时候,占位符就非常有用。

    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}}

    替换

    除占位的语法外,还可以通过替换来执行更复杂的操作。使用替换来动态的生成文本。

    替换的语法如下:

    ${var_name/regex/format_string/}
    ${var_name/regex/format_string/options}

    var_name

      变量名:1,2,3...

    regex

      Perl 风格的正则表达式。更多请戳:Boost library reference for regular expressions

    format_string

      戳上面那个链接

    options

      可选的。可以是以下的任意一种:i 不区分大小写、g 替换全局、m 匹配多行

    通过替换功能,以下例子中,轻松的得到下划线:

          Original: ${1:Hey, Joe!}
    Transformation: ${1/./=/g}
    
    # Output:
    
          Original: Hey, Joe!
    Transformation: =========

    获取当前文件名(不包含扩展名):

    <snippet>
        <content><![CDATA[
    using UnityEngine;
    using System.Collections;
    
    public class ${TM_FILENAME/(.+)..+/$1/} : MonoBehaviour {
    
        // Use this for initialization
        void Start() {
            ${1}
        }
        
        // Update is called once per frame
        void Update() {
    
        }
    
    }]]></content>
        <tabTrigger>ucs</tabTrigger>
        <description>Unity Class</description>
        <scope>source.cs</scope>
    </snippet>
  • 相关阅读:
    PHP rsort() 函数
    PHP shuffle() 函数
    PHP sizeof() 函数
    PHP sort() 函数
    导入Orabbix_export_full.xml模板报错:主机群组 "Templates" 已存在.
    要让CLR挂掉的话……
    要让CLR挂掉的话……
    Windows 10 快捷键汇总表格
    Windows 10 快捷键汇总表格
    VisualStudio 合并代码文件
  • 原文地址:https://www.cnblogs.com/yili16438/p/3734343.html
Copyright © 2011-2022 走看看