首页 > 其他分享 >VS Code 代码片段编写教程

VS Code 代码片段编写教程

时间:2023-05-16 18:12:00浏览次数:33  
标签:片段 Code 代码 VS 占位 CURRENT TM example

# VS Code 代码片段编写教程 最近要做一个vs code的代码片段插件,于是搜索和学习相关内容,整理分享给大家! > [!TIP] > 本篇博客50%+内容由BingChat提供,然后作者对内容进行验证和整理。 ## 格式 使用json格式定义代码片段,示例: ```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"。 下面是一个使用了多种占位符和变量的代码片段示例: ```json { "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 键时,它会展开为: ```javascript // 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` 变量的代码片段: ```json { "Print selected text": { "prefix": "printsel", "body": [ "console.log('$TM_SELECTED_TEXT');", "$0" ], "description": "Print selected text to console" } } ``` 上面的代码定义了一个名为 "Print selected text" 的代码片段。它的前缀为 "printsel",当你在编辑器中选中一些文本,然后输入 "printsel" 并按下 Tab 键时,它会展开为: ```javascript console.log('selected text'); ``` 其中,"selected text" 是你之前选中的文本。 ### 转换 在 Visual Studio Code 的代码片段中,你可以使用转换来对变量或占位符的值进行处理。转换是一种特殊的语法,可以让你在代码片段中使用正则表达式和格式字符串来修改变量或占位符的值。 下面是一个使用转换的代码片段示例: ```json { "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 键时,它会展开为: ```txt Original: example Upper case: EXAMPLE ``` 其中,第二行使用了转换语法 `${1/(.*)/${1:/upcase}/}` 来将第一个占位符的值转换为大写。转换语法中,`(.*)` 是一个正则表达式,用于匹配占位符的值;`${1:/upcase}` 是一个格式字符串,用于将匹配到的值转换为大写。 除了 `/upcase` 之外,还有其他一些预定义的格式字符串可以使用,例如 `/downcase`(转换为小写)、`/capitalize`(首字母大写)和 `/pascalcase`(帕斯卡命名法)等。 你也可以使用自定义的格式字符串来对匹配到的值进行处理。例如,下面是一个使用自定义格式字符串的代码片段示例: ```json { "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 键时,它会展开为: ```txt Original: example Reverse: elpmaxe ``` 其中,第二行使用了转换语法 `${1/(.*)/${1[::-1]}/}` 来将第一个占位符的值反转。转换语法中,`${1[::-1]}` 是一个自定义格式字符串,用于将匹配到的值反转。 总之,在 Visual Studio Code 的代码片段中,你可以使用转换来对变量或占位符的值进行处理。你可以使用预定义或自定义的格式字符串来修改变量或占位符的值。

标签:片段,Code,代码,VS,占位,CURRENT,TM,example
From: https://www.cnblogs.com/msdeveloper/p/17406431.html

相关文章

  • VS2022安装与使用
    作为个人使用,不用考虑老版本兼容问题,直接安装VS2022。环境:win11 1.下载对于VS,微软提供了社区版,因此不需要搞什么破解,直接在个人环境上到 下载链接 下载社区版即可。2.安装下载后,才发现下载的是个安装程序。点击该程序,会提示需要设置某些选项,以便配置安装,点击继续就行:......
  • 一图看懂CodeArts Deploy 5大特性,带你玩转部署服务
    华为云持续部署服务CodeArtsDeploy,通过模块化自由编排部署流程,实现软件的自动化部署,基于其易入门、功能全、集成度高、自动化、可靠的部署能力,能够帮您快速实现业务上云,全面提升软件的交付效率,显著提升交付质量! ......
  • LeetCode 257. 二叉树的所有路径
    题目链接:LeetCode257.二叉树的所有路径题意:给你一个二叉树的根节点root,按任意顺序,返回所有从根节点到叶子节点的路径。解题思路:递归法采用递归法,就是一个dfs的过程,在遍历过程中,记录上路径即可。完整代码如下:varres[]stringvarpath[]intfuncbinaryTreePaths(......
  • VSCode版本和离线插件不匹配的解决方式
    相信很多人都遇到过这种情况,在内网环境使用VSCode进行开发时,无法在线下载插件,然而没有插件的话使用起来就很不方便,于是我们就需要离线下载插件然后离线安装,但是这又出现一个问题,下载的插件和vscode的版本常常不兼容,那么我们该如何准确找到vscode对应版本的插件呢?一、查看vscode的......
  • 使用 UI5 Tools 这款 Visual Studio Code 扩展来管理和运行本地 SAP UI5 应用试读版
    本教程目前的每一篇文章,介绍的都是用命令行ui5serve本地启动一个Web服务器,来本地运行笔者Github里提供的SAPUI5应用。在浏览器地址栏里输入localhost:8080即可访问启动的Web服务器上的资源,从而访问SAPUI5应用:如果各位学习者不喜欢命令行的方式,而是习惯在GUI......
  • Codeforces 1158E - Strange device(交互)
    一个有点烦的\(8\logn\)的做法。大致想法大家都一样:以\(1\)为根,然后先问出每个点深度,再问出每个点的父亲。首先先用一个log的做法问出树高,具体做法是直接令根节点的\(f\)为二分出的\(mid\),看能否覆盖所有点即可,记最大深度为\(mxdep\)。可以在二分过程中顺带着求出深......
  • Codeforces 1423C - Dušan's Railway(树分块)
    首先\(k>3\)当\(k=3\)做,也就是说题目等价于找不超过\(10n\)条路径使得任意两点间的路径都可以表示为选定的这些路径中不相交的三者的并。先考虑链怎么做,关于这个\(3\),很自然的想法是取若干关键点,关键点之间两两连边,其余点再像相邻两关键点连边,因此考虑分块,每\(B\)个点设......
  • LeetCode 111. 二叉树的最小深度
    题目链接:LeetCode111.二叉树的最小深度题意:给定一个二叉树,找出其最小深度。给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。解题思路:1.递归法与求最大深度类似,采用先序或者后序都是可以的,但是这里要注意一个问题:最小深度是从......
  • Python-解决字符串编码UnicodeEncodeError错误
     data_results="123456789\u93b4\u612c\u59db\u2022"#将字符串转换为字节序列:使用encode方法将字符串转换为字节序列,并指定编码格式为utf-8print(data_results.encode('utf-8'))#使用encode方法将字符串转换为字节序列,并指定编码格式为gbk,使用ignore参数忽略无法处理的字......
  • Linux vsftpd服务虚拟用户登陆实验
    转至:https://zhuanlan.zhihu.com/p/354577768工具:win10系统、CentOs6.5实操:第一步:基础环境搭建:设置服务器IP地址为192.168.10.10,防护墙、内核机制关闭[root@bogon~]#vim/etc/sysconfig/network-scripts/ifcfg-eth0IP:192.168.10.10[root@bogon~]#servicenetworkreloa......