Sublime Text自定制代码片段(Code Snippets)
在编写代码的整个过程中,开发人员经常会一次又一次的改写或者重用相同的代码段,消除这种重复过程的方法之一是把我们经常用到的代码保存成代码片段(snippets),这使得我们可以方便的检索和使用它们。
为了提高你的编码效率,Sublime Text提供了一种让你可以轻松添加自定义代码片段的功能。这篇文章中,我们将看到在Sublime Text中如何创建、管理以及使用代码片段来极大的简化我们的工作流程。
创建代码片段
为了创建代码片段,我们需要打开 Tools > New Snipptes。

Sublime Text会提供下面的模版供我们定制代码片段:
- <snippet>
- <content><![CDATA[
- Hello, ${1:this} is a ${2:snippet}.
- ]]></content>
- <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
- <!-- <tabTrigger>hello</tabTrigger> -->
- <!-- Optional: Set a scope to limit where the snippet will trigger -->
- <!-- <scope>source.python</scope> -->
- </snippet>
我们只需把代码添加到<content>中的<![CDATA[ ]]>元素内即可,如:
- <content><![CDATA[
- -webkit-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
- -moz-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
- box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
- ]]></content>
然后在<tabTrigger>中设置让Sublime Text自动补全代码片段的触发词(trigger keyword)。触发词的名字最好方便记忆,并且与代码片段相关。这里我们设置触发词为shadow。
- <tabTrigger>shadow</tabTrigger>
最后,我们定义代码片段的使用范围(scope)。由于这里我们添加的是CSS3的Box Shadow属性,我们可以想限制代码片段只在样式表中起作用。
- <scope>source.css</scope>
完整代码如下:
- <snippet>
- <content><![CDATA[
- -webkit-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
- -moz-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
- box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
- ]]></content>
- <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
- <tabTrigger>shadow</tabTrigger>
- <!-- Optional: Set a scope to limit where the snippet will trigger -->
- <scope>source.css</scope>
- </snippet>
到这里我们已经完成了代码片段的设置,现在只需保存它。按 Ctrl+S 保存文件,Sublime Text默认会把文件保存到 /Packages/User 目录下,但是为了便于管理,我们创建一个新的文件夹来专门保存Snippets,因为可能还有一些Build文件、Plugin文件等也需要创建新的文件夹来保存。

.sublime-snippet 为扩展名,否则Sublime Text将不能识别它是一个代码片段。插入代码片段
在编辑器中输入触发词的时候,Sublime Text会显示选项。我们可以通过在选项中选择或者按 Tab 来触发关键词插入代码片段。

之后点击 Tab 键,自动插入代码片段如下:

由于前面我们指定了scope范围为CSS文件,所以这个代码片段只能在文件类型中是不会被触发的,像下面这样:

Tab键及域标记(Field Markers)
此外,有时我们还需要编辑代码片段中的一些特殊属性。以上面的CSS3 box-shadow为例,我们可能需要改变阴影的颜色、模糊度及偏移量。
Sublime Text提供了在插入代码片段后,高亮我们需要编辑的区域的功能。这些区域可以用 $ 符号后面跟随 { } 来指定,并且可以指定顺序,如下:
- -webkit-box-shadow: ${1:1px} ${2:1px} ${3:1px} ${4:0px} ${5:rgba(0, 0, 0, 0.5)};
- -moz-box-shadow: ${1:1px} ${2:1px} ${3:1px} ${4:0px} ${5:rgba(0, 0, 0, 0.5)};
- box-shadow: ${1:1px} ${2:1px} ${3:1px} ${4:0px} ${5:rgba(0, 0, 0, 0.5)};
上面的例子中,首先高亮显示的区域是${1:1px},之后按 TAB键的时候会按照指定的顺序依次高亮。在下面的截图中,请注意box-shadow属性的第一个值(包括带有前缀的)全部被高亮显示了。

Sublime Text的多点编辑功能让我们一次同时选择或高亮多行,使得编辑更加快捷。之后按 Tab键,高亮和编辑第二个数字区域${2:1px},之后继续。

安装代码片段扩展包
你并不需要自己定义很多代码片段,因为已经有很多语言类型的代码片段扩展包供我们安装使用。
假设你已经安装了Package Control,你可以按 Ctrl+Shift+P ,然后进入Package Control来安装代码片段扩展包。
下面的例子中,我们发现SASS Snippets是可用的。

你并不需要记住代码片段的整个触发词,因为在你输入的时候,Sublime Text会自动为了显示可用选项。

That’s All. 希望这个小技巧可以帮你提高编码效率。Happy Coding!
Further Resource
有关安装Package Control的方法,你可以参考下面的网页:
关于更多创建及自定义代码片段的说明,你可以参考:
Sublime Text自定制代码片段(Code Snippets)的更多相关文章
- sublime text 3 添加代码片段
工具>插件开发>新建代码片段 <snippet> <content> <![CDATA[ Hello, ${1:this} is a ${2:snippet} ...
- 如何在Sublime Text中添加代码片段
我们在编写代码的时候,总会遇到一些需要反复使用的代码片段.这时候就需要反复的复制和黏贴,大大影响效率.我们利用Sublime Text的snippet(代码片段)功能,就能很好的解决这一问题.通俗的讲 ...
- sublime text 2自定义代码片段
本文引用 http://www.blogjava.net/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_tex ...
- VS里的 代码片段(Code snippet)很有用,制作也很简单
工欲善其事必先利其器,而 Visual Studio 就是我们的开发利器. 上一篇文章,介绍了一个很棒的快捷键,如果你还没用过这个快捷键,看完之后应该会豁然开朗.如果你已经熟练的应用它,也会温故而知新 ...
- Sublime Text 如何一个代码双屏显示代码上下部分?
Sublime Text 如何一个代码双屏显示代码上下部分? sublime text如何一个代码双屏显示代码上下部分 先显示2行实图 把想要分屏显示的文件,打开新窗口,然后再拖过去就可以了. 快捷操 ...
- Sublime Text的使用代码块安装的模块
在众多的开发工具IDE当中.作者现在唯独深爱sublime text(以下简称st).以前做后台开发使用visual studio(以下简称vs),以及实行前后端分工也是配合后台使用vs.这里要讲述两 ...
- Visual Studio 如何使用代码片段Code Snippet提高编程速度!!!
使用Code Snippet简化Coding 在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符 ...
- Python - 代码片段,Snippets,Gist
说明 代码片段来自网上搬运的或者自己写的 华氏温度转摄氏温度 f = float(input('请输入华氏温度: ')) c = (f - 32) / 1.8 print('%.1f华氏度 = %.1 ...
- Sublime Text对Python代码加注释的快捷键
一直在Coursera上补基础课,发现很多课程都用Python作为教学语言,学了一下感觉果然好,简直是用英语在写代码.(我建Python目录的时候发现去年学过一点点Python,居然一点都不记得了= ...
随机推荐
- phoenix 利用CsvBulkLoadTool 批量带入数据并自动创建索引
需要先创建表: CREATE TABLE IF NOT EXISTS population ( state CHAR() NOT NULL, city VARCHAR NOT NULL, popula ...
- [待解决]报错:JSON parse error: Unexpected character
{"code":"9999","message":"JSON parse error: Unexpected character ...
- 从内部重启python脚本
我有一个基于python的GTK应用程序,可以加载几个模块.它是从(linux)终端运行的,如下所示: ./myscript.py --some-flag setting 用户可以从程序中下载(使用G ...
- 6-MySQL-Ubuntu-操作数据表的基本操作(一)
注: SQL语句的关键字不区分大小写,如select 和Select都可以 (1) 查看当前使用的数据库; select database(); (2) 使用某数据库或切换到某数据库 use 数据库名 ...
- idea使用tomcat运行maven打包的war
注:此方法启动的tomcat只能够访问到本项目,包括tomcat的ROOT目录都访问不到 1.点击添加run config ,选择添加tomcat server
- python接口自动化(响应对象方法)
python接口自动化(响应对象方法) 一.encoding作用 获取请求的编码(在不设置响应编码时,响应的信息默认使用的是请求的编码格式):r.encoding 设置响应的编码:r.encoding ...
- Oracle数据库与MySQL的不同点
Oracle笔记 一. Oracle的启动和登录: 1.启动:通过启动Oracle的服务启动. OracleServiceORCL:核心服务,必须启动. OracleOraDb11g_home1 ...
- cross compile vlc 播放器
上一篇文章介绍了如何交叉编译 FFmpeg ,继续介绍 VLC播放器 交叉编译 . 首先下载 vlc 源码 我用的是 2.2.6 地址 : http://mirrors.neusoft.edu ...
- 图(graph)
一.非线性结构:图 图由顶点集V,集合规模为n,在n个顶点之间可能存在对应关系,我们用连边来描述这种,即边E,规模为e. 邻接关系:顶点与顶点之间的关系:关联关系:顶点与它相连的边的关系.序列结构(v ...
- CF755G PolandBall and Many Other Balls/soj 57送饮料
题意:长度为n的序列,相邻两个或单独一个可以划分到一个组,每个元素最多处于一个组. 问恰好分割成k(1<=k<=m)段有多少种方案? 标程: #include<bits/stdc++ ...