首页 > 其他分享 >VS Code自定义代码模板

VS Code自定义代码模板

时间:2024-06-03 21:29:53浏览次数:13  
标签:body Code 自定义 generic cpp prefix VS doxdocgen 模板

VS Code自定义代码模板

VS Code作为一款轻量级的编辑器,使用体验极佳,具有很多有用的小功能,也有着非常丰富的插件,日常写代码的时候自动补全和各种模板能够有效的提高编码的效率,这里介绍两种我常使用的自定义代码块或者模板的设置方法。

集成自定义代码段

VS Code自带了用户定义代码段功能,可以在菜单文件 > 首选项 > 用户片段中选择相应的语言进行设置。

方法

设置的方法如下所示,这里以C/C++的代码段为例:

{
    "cpp":{
        "prefix": "cpp",
        "body": [
            "#include<bits/stdc++.h>",
            "using namespace std;",
            "int main(){",
            "    $1",
            "    return 0;",
            "}",
        ],
        "description": "for nomal cpp"
    },
}

其中各个字段含义如下:
  "cpp"表示当前字段的标签名;
  "prefix"表示当前代码段的触发字符;
  "body"表示当前代码段的内容,可以直接用字符串或者带有转义字符的字符串表示,其中"$1"表示光标停留的第一个位置,可以通过类似的编号增加位置以方便使用Tab键切换位置;
  "description"表示对当前代码段的描述,属于自定义内容,仅用于描述相关内容是什么。
  使用多组标签就可以定义多组代码补全片段。

示例

以下是上述方法中cpp代码段的演示效果:
  

个人配置文件分享

以下为我自己常用的代码块:

{
    "cpp":{
        "prefix": "cpp",
        "body": [
            "#include<bits/stdc++.h>",
            "using namespace std;",
            "int main(){",
            "    $1",
            "    return 0;",
            "}",
        ],
        "description": "for nomal cpp"
    },
    "leetcode":{
        "prefix": "leetcode",
        "body": "#include<bits/stdc++.h>\nusing namespace std;\n",
        "description": "for leetcode"
    },
    "ListNode":{
        "prefix": "List",
        "body": [
            "#include<bits/stdc++.h>",
            "using namespace std;",
            "//链表定义",
            "struct ListNode {",
            "    int val;",
            "    ListNode *next;",
            "    ListNode() : val(0), next(nullptr) {}",
            "    ListNode(int x) : val(x), next(nullptr) {}",
            "    ListNode(int x, ListNode *next) : val(x), next(next) {}",
            "};\n",
        ],
        "description": "for List of leetcode"
    },
    "Tree":{
        "prefix": "Tree",
        "body": [
            "#include<bits/stdc++.h>",
            "using namespace std;",
            "//二叉树定义",
            "struct TreeNode {",
            "    int val;",
            "    TreeNode *left;",
            "    TreeNode *right;",
            "    TreeNode() : val(0), left(nullptr), right(nullptr) {}",
            "    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}",
            "    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}",
            "};\n",
        ],
        "description": "for Tree of leetcode"
    },
    "main":{
        "prefix": "mymain",
        "body": [
            "int main(){",
            "    $1",
            "    return 0;",
            "}"
        ],
        "description": "mymain"
    },
    "note":{
        "prefix": "#note",
        "body": [
            "/******************** --$1-- ********************/",
        ],
        "description": "note"
    },
    "multinote":{
        "prefix": "#multinote",
        "body": [
            "/********************************************************************************",
            " * $1",
            " ********************************************************************************/",
        ],
        "description": "multinote"
    },

}

doxygen注释模板

doxygen插件

在扩展商城中搜索并安装Doxygen Documentation Generator插件。
  

插件相关配置

在VS Code的设置文件setting.json文件中添加相关设置项。其中包含了触发字符///、注释代码块的第一行和最后一行内容、C++类方法的描述说明、文件头生成模板,函数描述说明模板,内容如下所示:

{
    //doxygen注释设置
    "doxdocgen.c.triggerSequence": "///",
    "doxdocgen.c.firstLine": "/********************************************************************************",
    "doxdocgen.c.lastLine": " ********************************************************************************/",
    "doxdocgen.cpp.ctorText": "Construct a new {name} object",
    "doxdocgen.cpp.dtorText": "Destroy the {name} object",
    "doxdocgen.cpp.tparamTemplate": "@tparam {param} ",
    "doxdocgen.file.fileOrder": [
      "file",
      "author",
      "brief",
      "version",
      "date",
      // "empty",
      // "copyright",
      // "empty",
      // "custom"
    ],
    "doxdocgen.file.fileTemplate": "@file {name}",
    "doxdocgen.generic.authorName": "Song Jiahao",
    "doxdocgen.generic.authorEmail": "[email protected]",
    "doxdocgen.generic.authorTag": "@author {author} ({email})",
    "doxdocgen.generic.briefTemplate": "@brief {text}",
    "doxdocgen.file.versionTag": "@version 1.0.0",
    "doxdocgen.generic.dateFormat": "YYYY-MM-DD",
    "doxdocgen.generic.dateTemplate": "@date {date}",
    "doxdocgen.file.copyrightTag": [
      "@copyright Copyright (c) {year}"
    ],
    "doxdocgen.file.customTag": [],

    "doxdocgen.generic.linesToGet": 20,
    "doxdocgen.generic.order": [
      "brief",
      "empty",
      "tparam",
      "param",
      "return",
      // "custom"
    ],
    "doxdocgen.generic.paramTemplate": "@param{indent:8}{param}{indent:25}",
    "doxdocgen.generic.returnTemplate": "@return{indent:8}{type}{indent:25}",
}

使用示例

使用自定义的触发字符即可触发相应的代码模板,示例如下所示:

    1. 文件头模板
        
    1. 类模板
        构造函数:
        
        析构函数:
        
    1. 函数模板
        

标签:body,Code,自定义,generic,cpp,prefix,VS,doxdocgen,模板
From: https://blog.csdn.net/qq_33596792/article/details/139424765

相关文章

  • leetcode 377. 组合总和 Ⅳ(dp)
    377.组合总和Ⅳ-力扣(LeetCode)dp,跟完全背包反着来,可以当作是爬楼梯来做,相当于每次爬的楼梯数是从数组种选的。1#defineIOstd::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)2#definebug(x)cout<<#x<<"is"<<x<<endl;3#include<bits/stdc++.h>4usin......
  • HarmonyOS NEXT星河版之自定义List下拉刷新与加载更多
    文章目录一、加载更多二、下拉刷新三、小结一、加载更多借助List的onReachEnd方法,实现加载更多功能,效果如下:@ComponentexportstructHPList{//数据源@PropdataSource:object[]=[]//加载更多是否ing@StateisLoadingMore:boolean=false......
  • Floyd判圈算法 leetcode
    龟兔赛跑/Floyd判圈算法概述判断一个链表是否存在环画图演示两个指针相遇的情况:查找链表中环的首个节点在这里插入图片描述数学公式表示为:(对应力扣142.环形链表II,141.环形链表I)判断一个链表是否存在环龟兔赛跑/Floyd判圈算法转换成判断链表是否存......
  • 前端工程化工具系列(六)—— VS Code(v1.89.1):强大的代码编辑器
    VSCode(VisualStudioCode)是一款由微软开发的强大且轻量级的代码编辑器,支持多种编程语言,并提供了丰富的扩展插件生态系统。这里主要介绍如何使用配置ESLint、Stylelint等插件来提升开发效率。1自动格式化代码最终要达到的效果是:在对文件保存时自动格式化Vue、JS/TS......
  • Code First 入门
    CodeFirst是EntityFramework(EF)中一种流行的开发模式,它允许开发者专注于应用程序的域模型(即类),而由EF根据这些类自动生成数据库结构。以下是CodeFirst的详细入门指南:1.安装EntityFramework首先,你需要在你的项目中安装EntityFramework。这通常可以通过NuGet包管理器来完成。......
  • 文心一言 VS 讯飞星火 VS chatgpt (273)-- 算法导论20.2 8题
    八、假设设计了这样一个proto-vEB结构,其中每个簇数组仅有u14u^\frac{1}{......
  • pytest运行报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in posit
    pytest运行报错:UnicodeDecodeError:‘gbk’codeccan’tdecodebyte0xafinposition82:illegalmultibytesequence  D:\Python\environment\python3.9.7\python3.exeD:/Python/nas_autotest/run.pyTraceback(mostrecentcalllast):File"D:\Python\......
  • git merge vs git rebase
      gitrebase命令经常被认为是Git巫术,初学者应该远离它,但它实际上可以让开发团队在使用时更加轻松。在本文中,我们将gitrebase与相关gitmerge命令进行比较。概念首先要理解的是gitrebase和gitmerge解决了同样的问题。这两个命令都旨在将更改从一个分支集成到另一个分支-......
  • 「AntV」X6 自定义vue节点(vue3)
    官方文档本篇文档只讲解vue3中如何使用,vue2的可以参考下官方文档安装插件@antv/x6-vue-shape添加vue组件既然使用vue节点,那么我们就需要准备一个vue的组件,这个组件就是节点的一些样式,根据你们的ui自行写代码即可<template><div>节点名称</div><div>节点描述</div>......
  • vs中怎么设置统一的output路径
    背景:1、一个sln下有多个csproj项目,让所有csproj生成的dll路径在sln根目录下的ouput文件夹解决办法:1、在sln目录下新建Directory.Build.props文件,文件内容如下:<Project><PropertyGroupCondition="'$(Configuration)'=='Debug'"><CustomOutputPath&g......