Sublime Text 2 代码片断
原文:Snippets
不管是在编码,还是写畅销书,你都可能会需要一遍又一遍的用到一些文本的小片断。使用片断来结束这种单调无聊的码字吧,片断是一种智能的模板,它能在合适的上下文中插入你需要的文本内容。
创建一个新的片断,选择 Tools | New Snippet... Sublime Text 将为你生成一个片断的基本的骨架。
片断可以保存在任何的包文件夹中,但为了简单起见,你可以保存在 Packages/User 文件夹下。
格式
通常的片断存在于某一个 Sublime Text 的包中。它们是一些以 sublime-snippet 为扩展名的简单的 XML 文件。举例来说,你可以在 Email 包下面创建一个 greeting.sublime-snippet 的片断。
典型的版本的结构如下(包含默认提示):
<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 需要的信息,插入什么、是否插入、何时插入。
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>
Sublime Text 2 代码片断的更多相关文章
- sublime text snippet代码片断
$0 代表补全代码后放的位置 0 的权重是最低的 $1 最高 也等于${1:} ${1: name} 1输入点的序号(1权重最高) name 自动补全的默认值 <conte ...
- sublime text 2代码片段(Snippet)功能的使用
“snippet”在英语里面是“片段”的意思.当我们编码时候,通常想要打几个简略的字符串,就出来一些固定的模板. 例如:使用snippet在新建文件时快速生成HTML头部信息等. 定义很简单,菜单:t ...
- 神器-Sublime Text 3 代码编辑器安装与使用
一.软件获取 1.软件下载地址:http://www.sublimetext.com/3. 2.注册机和汉化下载:http://files.cnblogs.com/files/1312mn/subli ...
- Sublime Text 格式化代码
1.添加快捷键 其实在sublime中已经自建了格式化按钮: Edit -> Line -> Reindent 只是sublime并没有给他赋予快捷键,所以只需加上快捷键即可 Prefer ...
- Sublime Text 3 代码格式化插件推荐 CodeFormatter
CodeFormatter CodeFormatter has support for the following languages: * PHP - By PHP_Beautifier* Java ...
- Sublime Text 格式化代码快捷键
首选项->按键绑定-用户 加入代码: {"keys": ["ctrl+alt+j"], "command": "reinde ...
- Sublime Text 新建代码片段(图解)
新建代码片段 1.打开NEW Snippet- 2.编辑代码片段 3.设置快捷键,按tab键执行 更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_4451949 ...
- Sublime Text 配置代码
{ "font_face": "Courier New bold", "font_size": 15.0, "ignored_wo ...
- sublime text下代码太长brackethighlighter不能正确显示闭合高亮的解决方法
用brackethighlighter显示高亮一直都有这个问题...也没在网上找到解决方案,就一直凑合着用,今天翻着配置文件玩,改了参数发现问题解决了...... 修改search_threshold ...
随机推荐
- A ship is always safe at the shore - but that is not what it is built for.
A ship is always safe at the shore - but that is not what it is built for. 船靠岸边总是安全的,但那不是建造它的目的.
- unity3d 第三人称视角的人物移动以及相机控制
何谓第三人称?就像这样: 用wasd控制人物移动,同时保持在相机的中心.用鼠标右键与滚轮控制相机的角度和距离. 先说一下人物的移动: 首先给作为主角的单位加上 Charactor Controller ...
- [TCPIP] 传输控制协议 Note
TCPIP TCP 传输控制协议 TCP提供一种面向连接的,可靠的字节流服务. 面向连接意味着两个使用TCP的应用在传输数据之前先建立一个TCP连接,这个过程跟打电话相似.在一个TCP连接中仅有两方 ...
- laravel框架总结(十三) -- redis使用
一切的前提都是已经安装好了redis服务器,并且能启动(我只总结了mac的安装方法:传送门) 我自己使用的是mac系统,有个教程可以参考下,传送门: 1.安装PHP PRedis 1>PRedi ...
- Markdown使用指南(2)—— 键盘符号说明
符号 中文名 英文名 ! 叹号 exclamation mark/bang ? 问号 question mark , 逗号 comma . 点号 dot/period/point : 冒号 colon ...
- JAVA可阻塞队列-ArrayBlockingQueue
在前面的的文章,写了一个带有缓冲区的队列,是用JAVA的Lock下的Condition实现的,但是JAVA类中提供了这项功能,就是ArrayBlockingQueue, ArrayBlockingQu ...
- python 学习笔记十五 django基础
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- spring-listener&spring-task注解版本
1.spring-listener: a) import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextLi ...
- MATLAB地图工具箱学习总结(二)大圆和恒向线
MATLAB地图工具箱学习总结(二)大圆和恒向线 今天要和大家谈一谈大圆.恒向线航道的画法.还是先从案例开始说起,再分别介绍相关的函数. 1 作业案例:地图投影作 ...
- SQLite数据库
数据持久化: 1.文件存储 适合用于存储一些简单的文本数据或二进制数据 存储数据:openFileOutput(文件名,操作模式),返回值为一个FileOutputStream对象,借助FileOut ...