一、自定义代码片段的创建、置顶、删除
1、代码片段文件创建
依次点击VSCode左下角设置图标-->代码片段选项,即可选择创建需要的代码片段文件类型。
如下图所示、3种类型的代码片段文件的区别为:
- 全局代码片段:此时文件存储在用户目录下,所有的项目均可使用此代码片段
- 局部代码片段:此时文件存储在项目目录下,只有此项目可使用此代码片段
- 特定语言代码片段:同全局代码片段,但只用特定的语言可以使用
2、代码片段文件置顶(不必要)
调用代码片段时,弹出的建议列表中代码片段穿插在其他建议中,在文件-->首选项-->设置中搜索“snippet suggestion”,入下图,调整为top后,代码片段将始终位于建议列表顶部。
3、代码片段文件删除
代码片段文件需要手动删除,可以通过文件资源管理器打开后删除。
二、代码片段的基本结构与语法
1、代码片段基本结构
如下图,创建代码片段文件时会给出一个基本例子,通过例子可以看到代码片段基本结构有:
- 代码片段作用描述:用于概况描述代码片段的作用
- scope:代码片段作用的语言
- prefix:代码片段触发的字符,输入此字符调用代码片段
- body:代码片段主体,也就是模板部分
- description:代码片段的详细描述
通过下面的例子,你可以更直观的了解各个部分的作用:
2、代码片段的基本语法
这里的语法指的是body中代码模板的语法,首先每一行代码模板必须双引号包裹并加上逗号(最后一句除外),其次还有:
- 标签:控制光标的位置,光标会出现在$1位置,按Tab键依次跳到$2、$3,而$0表示最终光标位置。同一制表位的多次出现会同步链接和更新。
- 占位符:带有值的标签,例如:${1:eg},与标签的区别是鼠标移动到此位置并选中eg字符。占位符可以嵌套,例如${1:another ${2:placeholder}},此时会先选中another placeholder,按Tab键后选中placeholder。
- 枚举选择:${1|one,two,three|},此时会提示用户选择其中一个作为值。
三、变量
1、变量与变量类型
使用$name或${name:default}可以动态调整值,如果name未设置,将插入默认值或空字符串。如果name不是定义好的(即未知名称),将将其转变为占位符。name有如下定义:
- TM_SELECTED_TEXT 当前选中的文本或空字符串
- TM_CURRENT_LINE 当前行的内容
- TM_CURRENT_WORD 光标下单词的内容或空字符串
- TM_LINE_INDEX 基于零索引的行号
- TM_LINE_NUMBER 基于一个索引的行号
- TM_FILENAME 当前文档的文件名
- TM_FILENAME_BASE 当前文档的文件名,不带扩展名
- TM_DIRECTORY 当前文档的目录
- TM_FILEPATH 当前文档的完整文件路径
- RELATIVE_FILEPATH 当前文档的相对(相对于打开的工作区或文件夹)文件路径
- CLIPBOARD 剪贴板的内容
- WORKSPACE_NAME 打开的工作区或文件夹的名称
- WORKSPACE_FOLDER 打开的工作区或文件夹的路径
插入当前的日期和时间:
- CURRENT_YEAR 本年度
- CURRENT_YEAR_SHORT 当前年份的最后两位数字
- CURRENT_MONTH 月份为两位数(例如“02”)
- CURRENT_MONTH_NAME 月份的全名(例如“七月”)
- CURRENT_MONTH_NAME_SHORT 月份的简称(例如“Jul”)
- CURRENT_DATE 一个月中的哪一天
- CURRENT_DAY_NAME 日期名称(例如“星期一”)
- CURRENT_DAY_NAME_SHORT 一天的简称(例如“星期一”)
- CURRENT_HOUR 24 小时制的当前小时
- CURRENT_MINUTE 当前分钟
- CURRENT_SECOND 当前秒
- CURRENT_SECONDS_UNIX 自 Unix 纪元以来的秒数
插入随机值:
- RANDOM 6位随机 Base-10 数字
- RANDOM_HEX 6位随机 Base-16 数字
- UUID V4版本 UUID
2、自定义注释片段
通过以下变量即可在代码模板中书写注释模板:
- BLOCK_COMMENT_START --> PHP/*或 HTML<!--
- BLOCK_COMMENT_END --> PHP*/或 HTML-->
- LINE_COMMENT --> PHP //
3、变量转换与占位符转换
占位符转换与变量转换类似,通过正则表达式来动态的更改占位符与变量。语法为:${id/regex/format/options},具体解释如下:
id
:占位符的编号或者变量。regex
:用于匹配占位符值的正则表达式。format
:用来替换匹配项的字符串,可以使用$1
,$2
, 等等来引用正则表达式的捕获组。options
:可选参数,比如g
代表全局搜索,i
代表忽略大小写等。
下面给出具体例子:
占位符转换:${1/(.*)/${1:/downcase}/}
:这里的第一个占位符被定义为一个转换。它将匹配任何字符((.*)
),然后将整个匹配结果通过 downcase
转换函数转换成小写。这个转换函数是内置的,用于将所有字母转换为小写字母。当你在此输入DIV时,按Tab后会自动帮你改为div。
变量转换:${TM_FILENAME/[\.-]/_/g}:先获取文件名称1-1.js,[\.-]部分匹配.或-字符,_部分代表将匹配字符改为_,g代表匹配文件名中所有的.或-字符,因此最后输出为1_1_js。