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 代码片段编写教程的更多相关文章

  1. Java Android程序员软件开发知识:枚举的介绍,以及代码的编写教程。

    Java枚举 Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值.使用枚举可以减少代码中的bug. 例如,我们为果汁店设计一个程序,它将限制果汁为小杯.中杯.大杯.这就意味着它不允许顾客点除 ...

  2. Visual Studio 如何使用代码片段Code Snippet提高编程速度!!!

      使用Code Snippet简化Coding 在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符 ...

  3. Writing Reentrant and Thread-Safe Code(译:编写可重入和线程安全的代码)

    Writing Reentrant and Thread-Safe Code 编写可重入和线程安全的代码 (http://www.ualberta.ca/dept/chemeng/AIX-43/sha ...

  4. visual studio code开发代码片段扩展插件

    背景 visual studio code编辑器强大在于可以自己扩展插件,不仅可以去插件市场下载,也可以按照官方的API很方便的制作适合自己的插件: 自己最近在开发一个手机端网站项目,基于vant项目 ...

  5. VS Code项目中通过npm包的方式共享代码片段的方案实现

    VS Code项目中通过npm包的方式共享代码片段的方案实现 上周在 "VS Code项目中共享自定义的代码片段方案" 的文章中提到过一个共享代码片段的方案,上周经过调研后并没有发 ...

  6. VS Code项目中共享自定义的代码片段方案

    VS Code项目中共享自定义的代码片段方案 一.问题背景 项目中注释风格不统一,如何统一注释风格 一些第三方组件库名称太长,每次使用都需要找文档,然后复制粘贴 部分组件库有自己的Snippets插件 ...

  7. VS里的 代码片段(Code snippet)很有用,制作也很简单

    工欲善其事必先利其器,而 Visual Studio 就是我们的开发利器. 上一篇文章,介绍了一个很棒的快捷键,如果你还没用过这个快捷键,看完之后应该会豁然开朗.如果你已经熟练的应用它,也会温故而知新 ...

  8. WPF技巧:通过代码片段管理器编写自己常用的代码模板提示效率

    在写自定义控件的时候,有一部分功能是当内部的值发生变化时,需要通知控件的使用者,而当我在写依赖项属性的时候,我可以通过popdp对应的代码模板来完成对应的代码,但是当我来写属性更改回调的时候,却发现没 ...

  9. Code Snippets 代码片段

    Code Snippets 代码片段       1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...

  10. sublime text3 之snippet编写代码片段

    sublime text 3 中有个强大的功能就是可以编写各种文件类型的snippet代码片段,可以节省大量的时间. 文件名为:jekyll-top.sublime-snippet(.sublime- ...

随机推荐

  1. Grafana系列-统一展示-10-Explore Jaeger

    系列文章 Grafana 系列文章 Explore Jaeger 你可以通过Explore查询和显示 Jaeger 的 trace.有 3 种方法: Query by search Query by ...

  2. 玩转HarmonyOS专项测试,轻松上架“五星”高品质应用

      作者:David,华为测试服务专家 随着信息技术的高速发展,移动应用与人们生活日益紧密,面向各类场景的应用层出不穷,什么样的应用更受用户青睐呢?在满足用户功能需求之上,一个好的应用要能运行稳定.流 ...

  3. HarmonyOS实现表单页面的输入,必填校验和提交

    一. 样例介绍 本篇Codelab基于input组件.label组件和dialog组件,实现表单页面的输入.必填校验和提交: 1.  为input组件设置不同类型(如:text,email,date等 ...

  4. stack-c++

    #include <iostream> using namespace std; template <typename T> class Stack{ private: int ...

  5. signalr 应用于微信小程序(一)

    前言 在2017年基于signalr 和微信小程序 写的脚本. 正文 先安装signalr: 1.安装singalr,用nutget就行,用这个包管理就行. 2.使用singalr 3.根据singa ...

  6. Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET 版本

    前言: 上次发布了:Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET Core 版本 今天计划准备压测一下 .NET 版本,来测试并记录一下 Taurus.M ...

  7. 一文搞懂传统单节点网站的 Serverless 上云

    简介: 阿里云函数计算 FC 是事件驱动的全托管计算服务,真正的无需去考虑服务器的运维管理,只需要完成开发的代码进行上传,函数计算会通过角色策略去规划计算资源,弹性的方式执行函数,最后高效的执行部署. ...

  8. 深度解读 OpenYurt:从边缘自治看 YurtHub 的扩展能力

    作者 | 新胜  阿里云技术专家 导读:OpenYurt 开源两周以来,以非侵入式的架构设计融合云原生和边缘计算两大领域,引起了不少行业内同学的关注.阿里云推出开源项目 OpenYurt,一方面是把阿 ...

  9. 浅谈分布式一致性:Raft 与 SOFAJRaft

    简介: SOFAJRaft已开源 作者 | 家纯来源 | 阿里技术公众号 一 分布式共识算法 (Consensus Algorithm) 1 如何理解分布式共识? 多个参与者针对某一件事达成完全一致: ...

  10. ClickHouse Keeper 源码解析

    简介:ClickHouse 社区在21.8版本中引入了 ClickHouse Keeper.ClickHouse Keeper 是完全兼容 Zookeeper 协议的分布式协调服务.本文对开源版本 C ...