在编写代码的整个过程中,开发人员经常会一次又一次的改写或者重用相同的代码段,消除这种重复过程的方法之一是把我们经常用到的代码保存成代码片段(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. Java多态的实现机制是什么,写得非常好!

    作者:crane_practice www.cnblogs.com/crane-practice/p/3671074.html Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实 ...

  2. vue on emit 父子之间传值应用详细代码

    大概很多人都知道用这个,网上教程也一大堆,但我想说的是一定要手动敲一遍,敲一遍,敲一遍,重要的事情说三遍. 大概有些人也不知道它该何时用on,或者emit 的吧? 先说两个我项目中用到的场景吧: 项目 ...

  3. 标准 IO fread 与 fwrite 的使用(可以实现二进制流的读写)

    size_t   fread(void *ptr,  size_t size,   size_t nmemb,   FILE *stream); size_t   fwrite(const void ...

  4. zmq利用protobuf通信

    protobuf序列化之后为二进制数据,数据中可能包含 ‘\0’,直接转换为char *类型会导致发送数据不完整.解决方法: void buildProtobufMsg(const string&am ...

  5. 自然数幂和&伯努利数(Bernoulli)

    二项式定理求自然数幂和 由二项式定理展开得 \[ (n+1)^{k+1}-n^{k+1}=\binom {k+1}1n^k+\binom {k+1}2n^{k-1}+\cdots+\binom {k+ ...

  6. scala中Trait简单使用

    trait Log { def log(message:String) = println("log:" + message) } /** * 为实例混入trait * */ tr ...

  7. JMM 内存模型 与 volatile 关键字

    内存模型 线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory). 本地内存中存储了该线程以读/写共享变量的副本. 不同线程之间无法相互 ...

  8. 【RabbitMQ】六种模式与SpringBoot整合

    添加rabbitmq的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...

  9. 微信小程序自定义导航栏组件,完美适配所有手机,可实现各种功能和情况

    背景 在做小程序时,关于默认导航栏,我们遇到了以下的问题: Android.IOS 手机对于页面 title 的展示不一致,安卓 title 的显示不居中 页面的 title 只支持纯文本级别的样式控 ...

  10. NX二次开发-设置WCS显示UF_CSYS_set_wcs_display

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //设置WCS显示 //1显示WCS, 0不显 ...