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": "songjiahao.@whu.edu.cn",
    "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. 函数模板
        

当珍惜每一片时光~