原文:Snippets

不管是在编码,还是写畅销书,你都可能会需要一遍又一遍的用到一些文本的小片断。使用片断来结束这种单调无聊的码字吧,片断是一种智能的模板,它能在合适的上下文中插入你需要的文本内容。

创建一个新的片断,选择 Tools | New Snippet... Sublime Text 将为你生成一个片断的基本的骨架。

片断可以保存在任何的包文件夹中,但为了简单起见,你可以保存在 Packages/User 文件夹下。

格式

通常的片断存在于某一个 Sublime Text 的包中。它们是一些以 sublime-snippet 为扩展名的简单的 XML 文件。举例来说,你可以在 Email 包下面创建一个 greeting.sublime-snippet 的片断。

典型的版本的结构如下(包含默认提示):

1 <snippet>
2     <content><![CDATA[Type your snippet here]]></content>
3     <!-- Optional: Tab trigger to activate the snippet -->
4     <tabTrigger>xyzzy</tabTrigger>
5     <!-- Optional: Scope the tab trigger will be active in -->
6     <scope>source.python</scope>
7     <!-- Optional: Description to show in the menu -->
8     <description>My Fancy Snippet</description>
9 </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_FILENAMETAB SIZE:          $TM_TAB_SIZE
SOFT TABS:          $TM_SOFT_TABS
====================================# Output:
====================================
USER NAME:          guillermo
FILE NAME:          test.txtTAB 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 initializationvoid Start() {${1}}// Update is called once per framevoid Update() {}}]]></content><tabTrigger>ucs</tabTrigger><description>Unity Class</description><scope>source.cs</scope>
</snippet>

转载于:https://www.cnblogs.com/yili16438/p/3734343.html

Sublime Text 2 代码片断相关推荐

  1. 【IOS学习之工具学习】sublime text mac(代码编辑器)

    使用苹果电脑有时候想要查看代码,编辑代码,如果是ios开发可以用xcode打开查看,但是如果是其他的代码,比如java或者其他,又没有安装对应的开发工具,这时,我们可以使用sublime text这个 ...

  2. Sublime Text 3 代码格式化插件推荐 CodeFormatter

    CodeFormatter CodeFormatter has support for the following languages: * PHP - By PHP_Beautifier * Jav ...

  3. sublime text 3 代码比对插件安装使用

    引言 最近调试程序需要对两个差别不大的源代码做比对,用到了这个插件,在此处分享. 安装步骤 电脑要联网,不需要挂VPN 1. 打开sublime text3 ,快捷键 Ctrl + shift + p ...

  4. 【转载】sublime text下代码太长brackethighlighter不能正确显示闭合高亮的解决方法

    用brackethighlighter显示高亮一直都有这个问题...也没在网上找到解决方案,就一直凑合着用,今天翻着配置文件玩,改了参数发现问题解决了...... 修改search_threshold ...

  5. Sublime Text插件的离线安装-使用htmlprettify美化您的HTML代码

    Sublime Text是广大程序员喜欢的文本编辑器,Jerry觉得它最强大之处在于开放的架构,有丰富的插件为其提供各种各样额外的功能. 作为前端开发人员,经常需要从网上复制粘贴一些代码然后做修改,因 ...

  6. sublime html 折叠,关于sublime text, notepad++,vscode 代码折叠显示的比较

    出于层次化编程的需要,同时也是为了净化屏幕的显示,有时候经常会使用到代码折叠的功能. 经过对3个喜欢的,也是最常用的代码编辑器sublime text, notepad++,vscode(ultrae ...

  7. 神级代码编辑器 Sublime Text 全程指南

    转载来自[http://mdsa.51cto.com/art/201507/484183_all.htm#topx] 摘要(Abstract) 本文系统全面的介绍了Sublime Text,旨在成为最 ...

  8. Sublime Text插件的离线安装-使用htmlprettify美化您的HTML代码 1

    Sublime Text是广大程序员喜欢的文本编辑器,Jerry觉得它最强大之处在于开放的架构,有丰富的插件为其提供各种各样额外的功能. 作为前端开发人员,经常需要从网上复制粘贴一些代码然后做修改,因 ...

  9. Sublime Text 3 装了Anaconda 写Python代码出现框框的解决办法

    Sublime Text 3代码提示插件Anaconda下载:http://damnwidget.github.io/anaconda/#carousel-features 安装后写代码出现白框: 光 ...

最新文章

  1. python批量读取dat文件_python编写Windows环境下批量修改文件名
  2. luogu_2107【题解】
  3. 【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )
  4. 【机器学习基础】超全汇总!机器学习常用术语词汇表(建议收藏)
  5. iphone6s无4g显示无服务器,iPhone 6S无信号,镇定修复显现4G
  6. python树莓派系统_树莓派系统 Raspbian Buster 发布
  7. 三维重建16:概率图模型 模板类编程
  8. vs2015 支持Android arm neon Introducing Visual Studio’s Emulator for Android
  9. layui table动态选中_layui后台管理—table 数据表格详细讲解
  10. c++socket发送文字少一个字符_Socket粘包问题的3种解决方案,最后一种最完美
  11. CSS3--box-shadow
  12. 19_debug断点调试
  13. auto CAD 服务器地址修改,auto CAD 服务器地址修改
  14. XCTF-攻防世界-密码学crypto-新手练习区-writeup
  15. CHM格式打开以后无法显示解决
  16. 移动硬盘 无法访问 解决方法
  17. Java编程:颜色色带图片的生成
  18. MyBatis(九):MyBatis类型处理器(TypeHandler)详解
  19. calibre 电子书库/电子书管理软件--相关配置
  20. cf修改游戏客户端是什么意思_穿越火线修改游戏名方法

热门文章

  1. bitcoin 在ubuntu上的安装指南
  2. 2021总结,2022展望
  3. 1053 Path of Equal Weight
  4. 2017年Q1安卓ROOT类恶意病毒发展趋势研究报告
  5. Android逆向与病毒分析
  6. 【问链财经-区块链基础知识系列】 第十九课 区块链应用于电子存证
  7. Android开发工具之Android Studio---版本控制SVN使用(二)
  8. 2017c 语言程序设计,C语言程序设计第一次作业(2017.10.10完成)
  9. 华南师范大学计算机学院重修,为什么说本科绩点低毁一生 大学重修可以刷绩点吗...
  10. 微信为什么不进入鸿蒙生态,马化腾为何迟迟不将微信, 加入任正非的华为鸿蒙生态系统中呢?...