VSCode插件-开发 code-snippets 插件
# 0. 前言
本篇博客介绍如何开发一个 VSCOde 插件提供常用的代码片段(Snippets)。
示例代码仓库:https://github.com/wangjs-jacky/jacky-snippets (opens new window)
VSCode 插件市场:jacky-snippets (opens new window)
# 1.开发 snippets 片段
由于 code-snippets 功能相对来说比较简单,可以先不创建标准的 VSCode 插件工程。
直接在本地的
.vscode文件夹创建.code-snippets结尾的文件。上述步骤也可以替换为,按下
F1打开命令行,输入snippets关键字.
选择
local作用范围。
打开这个网站 snippet-generator.app/ (opens new window) 可以快速创建一段模板代码。
将模板代码黏贴到左侧,拷贝右侧的代码至上一步生成的
.code-snippets文件中。
其中,
prefix是触发词字段,description为说明字段。限定这段
snippets生效的范围在
package.json中配置snippets属性"snippets": [ { "language": "javascript", "path": "./snippets/snippets.json" }, { "language": "javascriptreact", "path": "./snippets/snippets.json" }, { "language": "typescript", "path": "./snippets/snippets.json" }, { "language": "typescriptreact", "path": "./snippets/snippets.json" } ]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18language的值如何确定?可以直接
ctrl+n创建一个新文件,然后点击Select a language,语言可选键值参考括号内的英文。
调试
根据设置的
prefix值即可触发语法提示,如下:
# 2.制作插件
code-snippets 除了可以直接在 local 工程中生效外,还可以制作为 vscode 插件,发布到应用市场,分享给他人使用。
code-snippets 开发如下:
使用
VSCode官方提供的代码片段模板工程。- 安装依赖
npm install -g yo generator-code1说明:
yo是第三方脚手架工具,VSCode官方维护的是generator-code这个包,yo启动时会自动去全局搜索generator-*名称开头的包。- 创建模板代码
yo code1- 选择
New Code Snippets

- 输入
package.json有关的一些基本信息,即可创建项目成功。
创建代码片段
比如说将
fse库的代码示例制作成snippets├── scripts │ └── mergeJson.js ├── snippets │ └── fse │ ├── fse-copy.code-snippets │ ├── fse-empty.code-snippets │ ├── fse-ensureDir.code-snippets │ ├── fse-ensureFile.code-snippets │ ├── fse-ensureLink.code-snippets │ ├── fse-ensureSymlink.code-snippets │ ├── fse-import.code-snippets │ ├── fse-move.code-snippets │ ├── fse-outputFile.code-snippets │ ├── fse-outputJson.code-snippets │ ├── fse-pathExists.code-snippets │ ├── fse-readJson.code-snippets │ ├── fse-remove.code-snippets │ └── fse-writeJson.code-snippets1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18由于在
package.json只允许设置一个path"contributes": { "snippets": [ { "language": "javascript", "path": "./dist/fse.code-snippets" } ] },1
2
3
4
5
6
7
8封装
json合并脚本,详见 (opens new window)npm run build:json1打包本地文件
vsce package1
插件的发布另起一篇博客记录。
# 3. 备注
插件的开发,具体可详见:VSCode 插件官网-Snippets in Visual Studio Code (opens new window)
除了简单的特性外,还有几个特性是 snippets 开发中用的比较多的:
tabSotp特性:插入模板后,支持使用tab移动光标的位置语法为:
$1、$2placeholder特性:默认值语法为:
${1: foo}、${1:another ${2:placeholder}}choice特性:支持选择语法为:
${1| one,tow,three |},使用| xxxx |包裹可选项variables特性:内置变量。举例来说,比如有一段语法片段,需要根据不同
language设置不同的值,如{ "hello": { "scope": "javascript,html", "prefix": "hello", "body": "$BLOCK_COMMENT_START Hello World $BLOCK_COMMENT_END" } }1
2
3
4
5
6
7在
js文件中插入文本为/* Hello World */,在HTML文件中插入文本为<!-- Hello World -->