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. 【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(下)

    [中秋国庆不断更]HarmonyOS对通知类消息的管理与发布通知(下) 一.发布进度条类型通知 进度条通知也是常见的通知类型,主要应用于文件下载.事务处理进度显示.HarmonyOS提供了进度条模板, ...

  2. 重新点亮linux 基本软件————防火墙[一]

    前言 简单介绍一下linux的防火墙. 正文 防火墙分类: 软件防火墙和硬件防火墙 包过:过滤防火墙和应用层防火墙 iptables 的表和链 规则表: filter nat mangle raw f ...

  3. nginx 学习的前提

    前言 在nginx 中,需要学会的是如何安装.基础的命令.看懂配置那么这时候才是一切的刚刚开始. 正文 安装可以去看菜鸟驿站的: https://www.runoob.com/linux/nginx- ...

  4. c# 泛型原理(旧)

    前言 说起泛型可能很多人刚才看到的时候肯定会说牛逼啊,厉害啊,这东西少写了不少代码,我总结了泛型的一个优点,那就是少写代码,额,专业点吧. 优点:增加代码的重复利用率,代码重用. 先不讲原理吧,来讲下 ...

  5. 涂色-【BFS】

    涂色 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间.给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newC ...

  6. LeetCode - 最接近的三数之和

    最接近的三数之和 你一个长度为 n 的整数数组 nums 和 一个目标值 target.请你从 nums 中选出三个整数,使它们的和与 target 最接近. 返回这三个数的和. 假定每组输入只存在恰 ...

  7. 【笔记】Java相关大杂烩①

    [笔记]Java相关大杂烩 Java 程序的执行流程是? *.java 文件-->*.class 文件-->类装载器-->字节码校验器-->解释器-->操作系统平台 Ja ...

  8. 力扣400(java)-第N位数字(中等)

    题目: 给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字. 示例 1: 输入:n = 3输出: ...

  9. [GPT] 提高个人网站的访问量的 30 种详细方式

    内容优化:提高网站的质量和价值,让用户喜欢并分享你的内容. SEO优化:通过关键词优化.网站结构优化等方式,提高搜索引擎排名. 社交媒体:在社交媒体上分享你的内容,吸引更多人来访问你的网站. 广告投放 ...

  10. [FAQ] mogodb Robo3T 客户端全屏后 怎么退出全屏

    mongodb 的 Robo3T 客户端: 如果是不小心全屏了,不用担心,按 F11 恢复. 如果想要全屏,也是按 F11. Link:https://www.cnblogs.com/farwish/ ...