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,居然一点都不记得了= ...
随机推荐
- hdu6341 /// 模拟 DFS+剪枝
题目大意: 将16行16列的矩阵分成四行四列共16块 矩阵的初始状态每行及每列都不会出现重复的元素 给定一个已旋转过某些块的矩阵 判断其是由初始状态最少经过几次旋转得到的 DFS枚举16个块的旋转方式 ...
- nuxt header 设置
1. nuxt.config.js 中配置全局 2. 在单页面设置单独
- 笔记:Python的浅复制和深复制
方法copy返回一个新字典,其包含的键-值对与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件,而不是副本). >>> x = {"username": ...
- md详解和rd详解:一次性创建多个目录和多级子目录
md 命令: 官方解释: E:\ABC>md /? 创建目录. MKDIR [drive:]path MD [drive:]path 如果命令扩展被启用,MKDIR 会如下改变: 如果需要,MK ...
- JS Window对象 计时器setInterval() 在执行时,从载入页面后每隔指定的时间执行代码。
计时器setInterval() 在执行时,从载入页面后每隔指定的时间执行代码. 语法: setInterval(代码,交互时间); 参数说明: 1. 代码:要调用的函数或要执行的代码串. 2. 交互 ...
- CSIC_716_20191203【 socket网络编程,以及沾包问题的高级解决方式】
AF_UNIX(本机通信) AF_INET(TCP/IP – IPv4) AF_INET6(TCP/IP – IPv6) SOCK_STREAM(TCP流) SOCK_DGRAM(UDP数据报) 远程 ...
- SpringBoot中使用Scheduling执行定时任务
SpringBoot自带的 Schedule,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多 以下任务都是在单线程下执行的 第一步 创建SpringBoot项目 第二步 外汇 ...
- scala对象简单记录
object Person { private val eyeNum = 2 def getEyeNum = eyeNum def main(args: Array[String]): Unit = ...
- 第k小团+bitset优化——牛客多校第2场D
模拟bfs,以空团为起点,用堆维护当前最小的团,然后进行加点更新 在加入新点时要注意判重,并且用bitset来加速判断和转移构造 #include<bits/stdc++.h> #incl ...
- NX二次开发-C++的vector用法
#include <algorithm> //vector排序去重 sort( BoxNum.begin(), BoxNum.end()); BoxNum.erase(unique(Box ...