在编写代码的整个过程中,开发人员经常会一次又一次的改写或者重用相同的代码段,消除这种重复过程的方法之一是把我们经常用到的代码保存成代码片段(snippets),这使得我们可以方便的检索和使用它们。

为了提高你的编码效率,Sublime Text提供了一种让你可以轻松添加自定义代码片段的功能。这篇文章中,我们将看到在Sublime Text中如何创建、管理以及使用代码片段来极大的简化我们的工作流程。

创建代码片段

为了创建代码片段,我们需要打开 Tools > New Snipptes

Sublime Text会提供下面的模版供我们定制代码片段:

  1. <snippet>
  2. <content><![CDATA[
  3. Hello, ${1:this} is a ${2:snippet}.
  4. ]]></content>
  5. <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
  6. <!-- <tabTrigger>hello</tabTrigger> -->
  7. <!-- Optional: Set a scope to limit where the snippet will trigger -->
  8. <!-- <scope>source.python</scope> -->
  9. </snippet>

我们只需把代码添加到<content>中的<![CDATA[  ]]>元素内即可,如:

  1. <content><![CDATA[
  2. -webkit-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
  3. -moz-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
  4. box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
  5. ]]></content>

然后在<tabTrigger>中设置让Sublime Text自动补全代码片段的触发词(trigger keyword)。触发词的名字最好方便记忆,并且与代码片段相关。这里我们设置触发词为shadow

  1. <tabTrigger>shadow</tabTrigger>

最后,我们定义代码片段的使用范围(scope)。由于这里我们添加的是CSS3的Box Shadow属性,我们可以想限制代码片段只在样式表中起作用。

  1. <scope>source.css</scope>
想指定多个scope,可以使用英文逗号“,”来分隔。Window版Sublime Text查看文件的scope类型,使用 Ctrl+Shift+Alt+P 快捷键,scope类型会显示在编辑器左下角,多个scope类型的文件我们只需要取第一个即可。

完整代码如下:

  1. <snippet>
  2. <content><![CDATA[
  3. -webkit-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
  4. -moz-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
  5. box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
  6. ]]></content>
  7. <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
  8. <tabTrigger>shadow</tabTrigger>
  9. <!-- Optional: Set a scope to limit where the snippet will trigger -->
  10. <scope>source.css</scope>
  11. </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提供了在插入代码片段后,高亮我们需要编辑的区域的功能。这些区域可以用 $ 符号后面跟随 { } 来指定,并且可以指定顺序,如下:

  1. -webkit-box-shadow: ${1:1px} ${2:1px} ${3:1px} ${4:0px} ${5:rgba(0, 0, 0, 0.5)};
  2. -moz-box-shadow: ${1:1px} ${2:1px} ${3:1px} ${4:0px} ${5:rgba(0, 0, 0, 0.5)};
  3. 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)的更多相关文章

  1. sublime text 3 添加代码片段

    工具>插件开发>新建代码片段 <snippet> <content> <![CDATA[ Hello, ${1:this} is a ${2:snippet} ...

  2. 如何在Sublime Text中添加代码片段

    我们在编写代码的时候,总会遇到一些需要反复使用的代码片段.这时候就需要反复的复制和黏贴,大大影响效率.我们利用Sublime Text的snippet(代码片段)功能,就能很好的解决这一问题.通俗的讲 ...

  3. sublime text 2自定义代码片段

    本文引用   http://www.blogjava.net/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_tex ...

  4. VS里的 代码片段(Code snippet)很有用,制作也很简单

    工欲善其事必先利其器,而 Visual Studio 就是我们的开发利器. 上一篇文章,介绍了一个很棒的快捷键,如果你还没用过这个快捷键,看完之后应该会豁然开朗.如果你已经熟练的应用它,也会温故而知新 ...

  5. Sublime Text 如何一个代码双屏显示代码上下部分?

    Sublime Text 如何一个代码双屏显示代码上下部分? sublime text如何一个代码双屏显示代码上下部分 先显示2行实图 把想要分屏显示的文件,打开新窗口,然后再拖过去就可以了. 快捷操 ...

  6. Sublime Text的使用代码块安装的模块

    在众多的开发工具IDE当中.作者现在唯独深爱sublime text(以下简称st).以前做后台开发使用visual studio(以下简称vs),以及实行前后端分工也是配合后台使用vs.这里要讲述两 ...

  7. Visual Studio 如何使用代码片段Code Snippet提高编程速度!!!

      使用Code Snippet简化Coding 在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符 ...

  8. Python - 代码片段,Snippets,Gist

    说明 代码片段来自网上搬运的或者自己写的 华氏温度转摄氏温度 f = float(input('请输入华氏温度: ')) c = (f - 32) / 1.8 print('%.1f华氏度 = %.1 ...

  9. Sublime Text对Python代码加注释的快捷键

    一直在Coursera上补基础课,发现很多课程都用Python作为教学语言,学了一下感觉果然好,简直是用英语在写代码.(我建Python目录的时候发现去年学过一点点Python,居然一点都不记得了= ...

随机推荐

  1. python中字符串输出格式

    print输入格式总结 通过使用ljust(),center(),rjust()函数来实现输入字符串的左右对齐,居中,右对齐等操作; 方法一:(函数不带参数,则默认以空格填充,注意:文字与空格总字符数 ...

  2. C# WinForm 访问webService天气预报

    1.直接添加服务引用 右键引用 -->添加服务引用 这样的好处是可以直接当成类用 简单 麻烦的地方就是地址是死的 代码如下: private void button1_Click(object ...

  3. C# WinForm控件之advTree

    0.属性和方法 //属性方法 advTree1.DragDropEnabled = !advTree1.DragDropEnabled;//控制是否可以拖动节点到 不同的层级下 advTree1.Mu ...

  4. wx.request 小程序之数据请求

    有点类似jQuery Ajax.

  5. Unity3D中画拉选框(绘制多选框)

    问题分析: 需要根据鼠标事件,摁下鼠标开始绘制选择框,抬起鼠标结束绘制. 实现思路: 该需求是屏幕画线,Unity内置了GL类  封装了OpenGL,可以通过GL类来实现一些简单的画图操作,这里也是使 ...

  6. ros机器人导航设置原点,目标点

    之前利用movebase导航定位都是通过rviz用鼠标指来指去,实验时非常方便,但实际应用总不能也人工指来指去吧,这怎么体现智能呢 启动导航后,用以前使用的rviz设设置目标点来获取map坐标系下的位 ...

  7. leetcode -有效的字母异位词 python&C++

    C++解题代码: class Solutiion { public: bool isAnagram(string s, string t) { ](); int n = s.length(); int ...

  8. javascript中的select、checkbox

    遍历checkbox <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...

  9. 其它课程中的python---1、python基础

    其它课程中的python---1.python基础 一.总结 一句话总结: 可以先把视频平台搭起来,这样学习效率会高很多,而且有额外收益 1.python的优势有哪些? 一个广泛的标准库 扩展性:比如 ...

  10. 隐藏tomcat页面异常显示的版本信息

    1.正常情况下,tomcat遇到404或500会返回版本信息: 2.有时我们不需要暴露版本信息,像这样: 3.只需要修改apache-tomcat-7.0.59的lib目录下的catalina.jar ...