VS Code 代码片段编写教程
VS Code 代码片段编写教程
最近要做一个vs code的代码片段插件,于是搜索和学习相关内容,整理分享给大家!
[!TIP]
本篇博客50%+内容由BingChat提供,然后作者对内容进行验证和整理。
格式
使用json格式定义代码片段,示例:
{
"ng if": {
"prefix": "ngif",
"body": "",
"description": "ng if"
},
"ng for": {
"prefix": "ngfor",
"body": "",
"description": "ng for"
}
}
语法:基本使用
$0:表示最终光标位置。${1:default}:表示带有默认值的占位符。当代码片段展开时,光标会定位在这个占位符上,并显示默认值 "default"。$CURRENT_YEAR、$CURRENT_MONTH、$CURRENT_DATE等:表示当前日期和时间的变量。${1|one,two,three|}:表示带有选项的占位符。当代码片段展开时,光标会定位在这个占位符上,并显示一个下拉列表,供用户选择 "one"、"two" 或 "three"。
下面是一个使用了多种占位符和变量的代码片段示例:
{
"Print date": {
"prefix": "date",
"body": [
"// Current date: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE",
"console.log('Hello, ${1:world}!');",
"$0"
],
"description": "Print current date and hello message"
}
}
上面的代码定义了一个名为 "Print date" 的代码片段。它的前缀为 "date",当你在编辑器中输入 "date" 并按下 Tab 键时,它会展开为:
// Current date: 2022-12-01
console.log('Hello, world!');
其中,第一行显示了当前日期,第二行显示了一条带有默认值 "world" 的消息。光标最终会定位在 $0 处。
语法:预定义常量
$TM_SELECTED_TEXT:表示当前选中的文本。$TM_CURRENT_LINE:表示当前行的内容。$TM_CURRENT_WORD:表示当前光标所在单词的内容。$TM_LINE_INDEX:表示当前行的索引(从 0 开始)。$TM_LINE_NUMBER:表示当前行号(从 1 开始)。$TM_FILENAME:表示当前文件名。$TM_FILENAME_BASE:表示当前文件名(不带扩展名)。$TM_DIRECTORY:表示当前文件所在目录。$TM_FILEPATH:表示当前文件的完整路径。
你可以在代码片段中使用这些变量来插入动态内容。例如,下面是一个使用了 $TM_SELECTED_TEXT 变量的代码片段:
{
"Print selected text": {
"prefix": "printsel",
"body": [
"console.log('$TM_SELECTED_TEXT');",
"$0"
],
"description": "Print selected text to console"
}
}
上面的代码定义了一个名为 "Print selected text" 的代码片段。它的前缀为 "printsel",当你在编辑器中选中一些文本,然后输入 "printsel" 并按下 Tab 键时,它会展开为:
console.log('selected text');
其中,"selected text" 是你之前选中的文本。
语法:转换
在 Visual Studio Code 的代码片段中,你可以使用转换来对变量或占位符的值进行处理。转换是一种特殊的语法,可以让你在代码片段中使用正则表达式和格式字符串来修改变量或占位符的值。
下面是一个使用转换的代码片段示例:
{
"Transform example": {
"prefix": "transform",
"body": [
"Original: ${1:example}",
"Upper case: ${1/(.*)/${1:/upcase}/}",
"$0"
],
"description": "Example of using transform in snippet"
}
}
上面的代码定义了一个名为 "Transform example" 的代码片段。它的前缀为 "transform",当你在编辑器中输入 "transform" 并按下 Tab 键时,它会展开为:
Original: example
Upper case: EXAMPLE
其中,第二行使用了转换语法 ${1/(.*)/${1:/upcase}/} 来将第一个占位符的值转换为大写。转换语法中,(.*) 是一个正则表达式,用于匹配占位符的值;${1:/upcase} 是一个格式字符串,用于将匹配到的值转换为大写。
除了 /upcase 之外,还有其他一些预定义的格式字符串可以使用,例如 /downcase(转换为小写)、/capitalize(首字母大写)和 /pascalcase(帕斯卡命名法)等。
你也可以使用自定义的格式字符串来对匹配到的值进行处理。例如,下面是一个使用自定义格式字符串的代码片段示例:
{
"Custom transform example": {
"prefix": "custom",
"body": [
"Original: ${1:example}",
"Reverse: ${1/(.*)/${1[::-1]}/}",
"$0"
],
"description": "Example of using custom transform in snippet"
}
}
上面的代码定义了一个名为 "Custom transform example" 的代码片段。它的前缀为 "custom",当你在编辑器中输入 "custom" 并按下 Tab 键时,它会展开为:
Original: example
Reverse: elpmaxe
其中,第二行使用了转换语法 ${1/(.*)/${1[::-1]}/} 来将第一个占位符的值反转。转换语法中,${1[::-1]} 是一个自定义格式字符串,用于将匹配到的值反转。
总之,在 Visual Studio Code 的代码片段中,你可以使用转换来对变量或占位符的值进行处理。你可以使用预定义或自定义的格式字符串来修改变量或占位符的值。
VS Code 代码片段编写教程的更多相关文章
- Java Android程序员软件开发知识:枚举的介绍,以及代码的编写教程。
Java枚举 Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值.使用枚举可以减少代码中的bug. 例如,我们为果汁店设计一个程序,它将限制果汁为小杯.中杯.大杯.这就意味着它不允许顾客点除 ...
- Visual Studio 如何使用代码片段Code Snippet提高编程速度!!!
使用Code Snippet简化Coding 在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符 ...
- Writing Reentrant and Thread-Safe Code(译:编写可重入和线程安全的代码)
Writing Reentrant and Thread-Safe Code 编写可重入和线程安全的代码 (http://www.ualberta.ca/dept/chemeng/AIX-43/sha ...
- visual studio code开发代码片段扩展插件
背景 visual studio code编辑器强大在于可以自己扩展插件,不仅可以去插件市场下载,也可以按照官方的API很方便的制作适合自己的插件: 自己最近在开发一个手机端网站项目,基于vant项目 ...
- VS Code项目中通过npm包的方式共享代码片段的方案实现
VS Code项目中通过npm包的方式共享代码片段的方案实现 上周在 "VS Code项目中共享自定义的代码片段方案" 的文章中提到过一个共享代码片段的方案,上周经过调研后并没有发 ...
- VS Code项目中共享自定义的代码片段方案
VS Code项目中共享自定义的代码片段方案 一.问题背景 项目中注释风格不统一,如何统一注释风格 一些第三方组件库名称太长,每次使用都需要找文档,然后复制粘贴 部分组件库有自己的Snippets插件 ...
- VS里的 代码片段(Code snippet)很有用,制作也很简单
工欲善其事必先利其器,而 Visual Studio 就是我们的开发利器. 上一篇文章,介绍了一个很棒的快捷键,如果你还没用过这个快捷键,看完之后应该会豁然开朗.如果你已经熟练的应用它,也会温故而知新 ...
- WPF技巧:通过代码片段管理器编写自己常用的代码模板提示效率
在写自定义控件的时候,有一部分功能是当内部的值发生变化时,需要通知控件的使用者,而当我在写依赖项属性的时候,我可以通过popdp对应的代码模板来完成对应的代码,但是当我来写属性更改回调的时候,却发现没 ...
- Code Snippets 代码片段
Code Snippets 代码片段 1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...
- sublime text3 之snippet编写代码片段
sublime text 3 中有个强大的功能就是可以编写各种文件类型的snippet代码片段,可以节省大量的时间. 文件名为:jekyll-top.sublime-snippet(.sublime- ...
随机推荐
- C 语言入门:如何编写 Hello World
C 语言简介 C 语言是由 Dennis Ritchie 于 1972 年在贝尔实验室创建的一种通用编程语言.尽管年代久远,它仍然是一款非常流行的语言.它之所以受欢迎的主要原因是它是计算机科学领域的基 ...
- SQL 查询优化指南:SELECT、SELECT DISTINCT、WHERE 和 ORDER BY 详解
SELECT 关键字 SQL的SELECT语句用于从数据库中选择数据.SELECT语句的基本语法如下: SELECT column1, column2, ... FROM table_name; 其中 ...
- Nacos 无法注册服务
情况描述: Nacos服务搭建完成. 引入了Nacos的依赖. <!-- SpringCloud Alibaba 服务管理 --> <dependency> <group ...
- 爱奇艺携手HMS Core,为用户打造更流畅的沉浸式观影体验
本文分享于HMS Core开发者论坛<[开发者说]爱奇艺携手HMS Core,为用户打造更流畅.更沉浸的观影体验>采访稿整理. 爱奇艺是国内领先的视频播放平台,通过接入HMS Core H ...
- Linux获取摄像头VID,PID的两种方式
第一种方式,是直接查询设备的vid.pid文件,来获取vid,pid 第二种方式,是查询设备信息,自己去解析对应的vid和pid 正常情况下,第一种方式就可以了,但是今天遇到一个ARM架构的kylin ...
- 面试连环炮系列(二十️五):RocketMQ怎么保证消息不丢失
RocketMQ怎么保证消息不丢失? A. 从Producer的视角来看:如果消息未能正确的存储在MQ中,或者消费者未能正确的消费到这条消息,都是消息丢失. B. 从Broker的视角来看:如果消息已 ...
- Spring6
0x00 环境配置 环境: IDEA >= 2022.1.4 JDK 17 Maven 3.8.6 Spring 6.0.0 JUnit 4.13.2 Log4j2 新建模块 spring001 ...
- Harbor高可用集群设计及部署(基于离线安装方式)
原文转自:Harbor高可用集群设计及部署(基于离线安装方式) 架构至美 2022-09-05 09:28 发表于北京 编者荐语: 纯干货.实用,推荐系数5颗星. 以下文章来源于Harbor进阶实战 ...
- 刪除k个数字后的最小值
前言 比如说 1593212,去掉一个数字后,保留的是最小值. 原理:因为要保留最小值,那么要删除最高位的数字是最明显的. 那么1和5到底删除哪一个呢?当然是删除最大值了. 代码 public sta ...
- Typora图床配置(Typora+PicGo+Github)
Typora图床配置(Typora+PicGo+Github) 一.Github配置 登录github:https://github.com/ 新建仓库 生成私人令牌 Settings->Dev ...