VSCODE自定义代码片段简述与基础使用

目录

  • 一、 简述
  • 二 、 基础使用说明
    • 2.1 新建一个代码块工作区间
    • 2.2 语法
  • 三、 示例
  • 四、 参考链接

一、 简述

VSCode的自定义代码片段功能允许开发者根据自己的需求定义和使用自己的代码片段,从而提高编码效率。
优点:

  1. 提高效率: 自定义代码片段能够减少重复输入的工作量,特别是对于经常使用的代码模式或者特定的代码结构。
  2. 规范代码风格: 可以定义统一的代码风格和命名规范,让团队成员在编码过程中更加一致。
  3. 易于维护: 用户代码片段文件可以轻松地进行编辑和管理,可以随时添加、删除或修改代码片段。
  4. 适应个性化需求: 开发者可以根据自己的习惯和需求定制代码片段,使得编码过程更符合个人的工作流程。
  5. 跨平台支持: VSCode跨平台,并且用户代码片段可以在不同的操作系统上共享和使用。

二 、 基础使用说明

2.1 新建一个代码块工作区间

点击左下角的设置
在这里插入图片描述
点击用户代码片段
在这里插入图片描述
在这里插入图片描述
选择新建全局代码片段
输入文件名称
在这里插入图片描述
在这里插入图片描述

2.2 语法

以下是snippets模板文件的示例代码

	Example:"Print to console": {"scope": "javascript,typescript","prefix": "log","body": ["console.log('$1');","$2"],"description": "Log output to console"}
  1. “Print to console” : 代码片段的名称,显示在代码片段提示列表中。
  2. “prefix” : 代码片段的触发前缀,当你键入这个前缀时,VSCode会自动提示该代码片段。
  3. “body” : 代码片段的实际内容,以数组的形式列出。在数组中,可以使用 $1、$2 等占位3. 符来表示光标停留的位置,方便用户进行填写和编辑。
  4. “description” : 代码片段的描述,当你在代码片段提示列表中看到该片段时,会显示该描述。

在上面的示例中,当你键入 log 后按下 Tab 键时,就会展开为 console.log(‘’);,其中的单引号之间是光标所在位置,方便你直接输入要打印的内容。再次按下 Tab 键,光标移动到 $2 所在的位置,方便你继续编辑后续代码。

body内介绍
Ⅰ 规则

	Example:"body": ["1","2","3","4","5","6","7"],

以双引号框住,逗号分隔为实际代码里的一行,在引号外的空格回车皆不会影响引号内的格式
在这里插入图片描述
如若需要进行特殊对齐缩进需要在引号内部操作,如在引号内部使用
“\t”制表符进行对齐

		"begin and end": {  "prefix": "bend",  "body": ["begin","\tbegin","\tend","end"], "description": "begin and end"  }, 

在这里插入图片描述

Ⅱ 方法
① 光标位置控制

"Cursor Position": {"prefix": "var","body": ["const haha = '$1';","const xixi = '$2'.toUpperCase();","$3"],"description": "Variable Replacement"}

输入关键词 var 然后 回车 或者 TAB 展开代码段后,光标会移动至 $[数字] 的位置(优先较 数字),而后在不通过 方向键 或者鼠标移动光标位置的情况下,继续按 TAB 就会移动至下一个较数字
在这里插入图片描述
② 变量替换

"Replace console.log with debug function": {  "prefix": "clog",  "body": [  "debug(${variable1}, ${variable1}, ${variable2});"  ],  "description": "Replace console.log with debug function and multiple variables"  }  

展开代码片段后光标移动至变量位置,输入内容即可将相同变量同时替换为相同内容

在这里插入图片描述
③ 二者结合

    "Replace console.log with debug function": {  "prefix": "clog~",  "body": [  "debug(${2:variable1}, ${3:variable2}, ${1:variable3});"  ],  "description": "Replace console.log with debug function and multiple variables"  }  

只需在变量名称前添加 [数字] : 即可通过 TAB 按照数字顺序移动光标
在这里插入图片描述

三、 示例

① verilog计数器

{// Place your snippets for verilog here. Each snippet is defined under a snippet name and has a prefix, body and // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the // same ids are connected."计数器": {"prefix": "cnt","body": ["reg         [${2:cnt_width}-1:0]      cnt_${1:cnt_name}    ; //计数器","wire                    add_cnt_${1:cnt_name}; //开始计数","wire                    end_cnt_${1:cnt_name}; //计数器最大值","always @(posedge sys_clk or negedge sys_rst_n) begin","\tif (!sys_rst_n)begin","\t\t cnt_${1:cnt_name} <= ${2:cnt_width}'b0;","\tend","\telse if (add_cnt_${1:cnt_name})begin","\t\tif (end_cnt_${1:cnt_name})begin","\t\t\tcnt_${1:cnt_name}<=${2:cnt_width}'b0;","\t\tend","\t\telse begin","\t\t\tcnt_${1:cnt_name} <= cnt_${1:cnt_name} +1'd1;","\t\tend","\tend","\telse begin","\t\tcnt_${1:cnt_name} <= cnt_${1:cnt_name};","\tend","end","assign add_cnt_${1:cnt_name} = ${3:param3};","assign end_cnt_${1:cnt_name} = add_cnt_${1:cnt_name} && (${4:param4});"],"description": "计数器模板"}
}

在这里插入图片描述

② ros有关代码片段(待补全)

{// Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. // Placeholders with the same ids are connected.// Example:"link": {"scope": "xml","prefix": "<link","body": ["<link name=\"$1\">","\t<visual>","\t\t<geometry>","\t\t</geometry>","\t\t<origin xyz=\"$2\" rpy=\"$3\"/>","\t\t<material name=\"$4\">","\t\t\t<color rgba=\"$5\"/>","\t\t</material>","\t</visual>","</link>"],"description": "link"},"robot": {"scope": "xml","prefix": "<robot","body": ["<robot name=\"$1\">","</robot>"],"description": "robot"},"launch to rivz": {"scope": "xml","prefix": "<launchrivz","body": ["<launch>","\t<param name=\"robot_description\" textfile=\"$1.urdf\" />","\t<node pkg=\"rviz\" type=\"rviz\" name=\"rviz\" args=\"$2.rviz\"/>","</launch>"],"description": "launch"},"launch to gazebo": {"scope": "xml","prefix": "<launchgaze","body": ["<launch>","\t<param name=\"${name}\" textfile=\"${urdf_path}.urdf\" />","<!-- 启动gazebo仿真环境 -->","\t<include file=\"$(find gazebo_ros)/launch/empty_world.launch\"/>","<!-- 在Gazebo中添加机器人模型 -->","<node pkg=\"gazebo_ros\" type=\"spawn_model\" name=\"${spawn_name}\" args=\"-urdf -model mycar -param ${name}\"/>","</launch>"],"description": "launch with gazebo"},"node": {"scope": "xml","prefix": "<node","body": ["<node pkg=\"$1\" type=\"$2\" name=\"$3\"/>"],"description": "node"},"joint": {"scope": "xml","prefix": "<joint","body": ["<joint name=\"$1\" type=\"$2\">","\t<parent link=\"$3\"/>","\t<child link=\"$4\"/>","\t<origin xyz=\"$5\" rpy=\"$6\"/>","\t<!-- <axis xyz=\"$7\"/> -->","</joint>"],"description": "joint"},"xacro": {"scope": "xml","prefix": "<xarobot","body": ["<robot name=\"$1\" xmlns:xacro=\"http://wiki.ros.org/xacro\">","\t$2","</robot>"],"description": "xacro"},"xacro:property": {"scope": "xml","prefix": "<xp","body": ["<xacro:property name=\"$1\" value=\"$2\" />"],"description": "property"},"xacro:macro": {"scope": "xml","prefix": "<xm","body": ["<xacro:macro name=\"$1\" params=\"$2\">","\t$3","</xacro:macro>"],"description": "macro"},"gazebo label": {"scope": "xml","prefix": "<Gazs","body": ["<!-- 1.设置碰撞参数 -->","<collision>","\t<geometry>","\t\t<box size= \"$1\" />","\t</geometry>","<origin xyry>","<origin xyz=\"$2\" rpy=\"$3\"/>","</collision>","<!-- 2.设置惯性矩镇 -->","<inertial>","\t<origin xyz=\"$4\"/>","\t<mass value=\"$5\"/>","\t<inertia ixx=\"$6\" ixy=\"$7\" ixz=\"$8\" iyy=\"$9\" izy=\"$10\" izz=\"$11\" />","</inertial>","<gazebo reference=\"$12\">","\t<material>Gazebo/$13</material>","</gazebo>"],"description": "gazebo "},}

四、 参考链接

1.https://blog.csdn.net/qq_33463449/article/details/103928634

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐鑫的ESP32-S3芯片的LE能实现beacon功能吗?

最近帮一个客户做ESP32定位器方案&#xff0c;客户提出这个疑问&#xff0c;乐鑫的ESP32-S3芯片的LE能实现beacon功能吗&#xff1f;针对这个问题&#xff0c;启明云端工程师小启给出这样的回复。 回答是可以的&#xff0c;大家可以看idf的例程。 ESP-IDF iBeacon demo From …

时间,空间复杂度讲解——夯实根基

前言&#xff1a;本节内容属于数据结构的入门知识——算法的时间复杂度和空间复杂度。 时间复杂度和空间复杂度的知识点很少&#xff0c; 也很简单。 本节的主要篇幅会放在使用具体例题来分析时间复杂度和空间复杂度。本节内容适合刚刚接触数据结构或者基础有些薄弱的友友们哦。…

C/C++开发,opencv-ml库学习,随机森林(RTrees)应用

目录 一、随机森林算法 1.1 算法简介 1.2 OpenCV-随机森林&#xff08;Random Forest&#xff09; 二、cv::ml::RTrees应用 2.2 RTrees应用 2.2 程序编译 2.3 main.cpp全代码 一、随机森林算法 1.1 算法简介 随机森林算法是一种集成学习&#xff08;Ensemble Learning&a…

百度沈抖:智能,生成无限可能

4月16日&#xff0c;Create 2024百度AI开发者大会在深圳举行。会上&#xff0c;百度集团执行副总裁、百度智能云事业群总裁沈抖正式发布新一代智能计算操作系统——百度智能云万源。它能管理万卡规模的集群&#xff0c;极致地发挥GPU、CPU的性能&#xff1b;它有强大的大模型作…

本地环境运行Llama 3大型模型:可行性与实践指南

简介&#xff1a; Llama 是由 Meta&#xff08;前身为 Facebook&#xff09;的人工智能研究团队开发并开源的大型语言模型&#xff08;LLM&#xff09;&#xff0c;它对商业用途开放&#xff0c;对整个人工智能领域产生了深远的影响。继之前发布的、支持4096个上下文的Llama 2…

Python 数据可视化 boxplot

Python 数据可视化 boxplot import pandas as pd import matplotlib.pyplot as plt import numpy as np import seaborn as sns# 读取 TSV 文件 df pd.read_csv(result.tsv, sep\t)normal_df df[df["sample_name"].str.contains("normal")] tumor_df df…

重磅!!!监控分布式NVIDIA-GPU状态

简介&#xff1a;Uptime Kuma是一个易于使用的自托管监控工具&#xff0c;它的界面干净简洁&#xff0c;部署和使用都非常方便&#xff0c;用来监控GPU是否在占用&#xff0c;非常美观。 历史攻略&#xff1a; docker应用&#xff1a;搭建uptime-kuma监控站点 win下持续观察…

Unity Meta Quest MR 开发(七):使用 Stencil Test 模板测试制作可以在虚拟与现实之间穿梭的 MR 传送门

文章目录 &#x1f4d5;教程说明&#x1f4d5;Stencil Test 模板测试&#x1f4d5;Stencil Shader&#x1f4d5;使用 Unity URP 渲染管线设置模板测试⭐Render Pipeline Asset 与 Universal Renderer Data⭐删除场景中的天空盒⭐设置虚拟世界的层级 Layer⭐设置模板测试 &#…

《Vid2Seq》论文笔记

原文链接 [2302.14115] Vid2Seq: Large-Scale Pretraining of a Visual Language Model for Dense Video Captioning (arxiv.org) 原文笔记 What&#xff1a; 《Vid2Seq: Large-Scale Pretraining of a Visual Language Model for Dense Video Captioning》 作者提出一种多…

深度学习检测算法YOLOv5的实战应用

在当前的检测项目中&#xff0c;需要一个高效且准确的算法来处理大量的图像数据。经过一番研究和比较&#xff0c;初步选择了YOLOv5作为算法工具。YOLOv5是一个基于深度学习的检测算法&#xff0c;以其快速和准确而闻名。它不仅能够快速处理图像数据&#xff0c;还能提供较高的…

【OceanBase诊断调优】——hpet(高精度时钟源)引起的CPU高问题排查

最近总结一些诊断OCeanBase的一些经验&#xff0c;出一个【OceanBase诊断调优】专题出来&#xff0c;也欢迎大家贡献自己的诊断OceanBase的方法。 1. 前言 昨天在问答区帮忙排查一个用户CPU高的问题&#xff0c;帖子链接&#xff1a;《刚刚新安装的OceanBase集群&#xff0c;…

Rime 如何通过 iCloud 实现词库多端同步,Windows、iOS、macOS

Rime 如何通过 iCloud 实现词库多端同步&#xff0c;Windows、iOS、macOS 一、设备环境 最理想的输入环境就是在多端都使用同一个词库&#xff0c;这样能保持多端的输入习惯是一致的。 以我为例&#xff0c;手头每天都要用到的操作平台和对应的输入法&#xff1a; 操作系统设…

【热门前端【vue框架】】——vue框架和node.js的下载和安装保姆式教程

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;程序员-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

【ARM 裸机】模仿 STM32 驱动开发

1、修改驱动 对于 STM32 来说&#xff0c;使用了一个结构体将一个外设的所有寄存器都放在一起&#xff0c;在上一节的基础上进行修改&#xff1b; 1.1、添加清除 bss 段代码&#xff0c; 1.2、添加寄存器结构体 新建一个文件&#xff0c;命名imx6u.h&#xff0c;注意地址的连…

NLP Step by Step -- How to use pipeline

正如我们在摸鱼有一手&#xff1a;NLP step by step -- 了解Transformer中看到的那样&#xff0c;Transformers模型通常非常大。对于数以百万计到数千万计数十亿的参数&#xff0c;训练和部署这些模型是一项复杂的任务。此外&#xff0c;由于几乎每天都在发布新模型&#xff0c…

Linux系统网络---DNS域名解析服务

目录 一、DNS的简介 DNS系统的分布式数据结构&#x1f447; DNS系统类 两种查询方式 二.正向解析实验 1.先关闭防火墙、selinux 2.安装bind 3.查看配置、修改配置 4.修改区域配置文件 正向解析&#x1f447; 反向解析&#x1f447; 5.修改 正向解析&#x1f…

python环境安装jupyter

1 前提条件&#xff1a;python环境 系统&#xff1a;win10 python&#xff1a;本地已经有python&#xff0c;可以查看本地的python版本&#xff1a; C:\Users\PC>python --version Python 3.8.10 2 安装jupyter并启动 安装jupyter C:\Users\PC>pip install jupyter …

Qt xml示范

1.数据格式 #ifndef XML_DATA_H #define XML_DATA_H#include<QWidget>struct Student {int s_id;QString s_name;double s_math_score;double s_english_score;}; struct Teacher{int t_id;QString t_name;QVector<Student> t_students_v; };#endif // XML_DATA_H…

面试:JVM垃圾回收

一、三种垃圾回收算法 1、标记清除&#xff08;已废弃&#xff09; 找到根对象&#xff08;局部变量正在引用的对象、静态变量正在引用的对象&#xff09;&#xff1b;沿着根对象的引用链&#xff0c;查看当前的对象是否被根对象所引用&#xff0c;若被引用&#xff0c;则加上…

区块链 | OpenSea 相关论文:Toward Achieving Anonymous NFT Trading(一)

​ &#x1f951;原文&#xff1a; Toward Achieving Anonymous NFT Trading &#x1f951;写在前面&#xff1a; 本文对实体的介绍基于论文提出的方案&#xff0c;而非基于 OpenSea 实际采用的方案。 其实右图中的 Alice 也是用了代理的&#xff0c;不过作者没有画出来。 正文…