在使用 VSCode 作为 C++ 开发工具的时候,编写头文件的时候会有大量的冗余代码,使用 Code Snippets 中的 transform 可以大幅提高该过程的效率,于是这里总结一些 VSCode 中一些开发常用的 Code Snippets 常用的笔记

动态变量 Dynamic Variables

使用动态变量可

    "File Header": {
        "prefix": "hdr",
        "body": [
            "/**",
            " * @file ${1:${TM_FILENAME}}",
            " * @author ${2:YourName}",
            " * @date $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE",
            " * @brief $0",
            " */"
        ],
        "description": "Insert file header"
    }

Transform

根据文件名生成默认的 Header 模板

	"Godot Cpp Header": {
		"scope": "cpp",
		"prefix": "gdcpp header",
		"body": [
			"#ifndef ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H",
			"#define ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H",
			"",
			"#include \"scene/main/node.h\"",
			"",
			"class ${TM_FILENAME_BASE/(^|_)([a-z])/${2:/upcase}/g} : public Node {",
			"    GDCLASS(${TM_FILENAME_BASE/(^|_)([a-z])/${2:/upcase}/g}, Node);",
			"public:",
			"    ${TM_FILENAME_BASE/(^|_)([a-z])/${2:/upcase}/g}();",
			"    ~${TM_FILENAME_BASE/(^|_)([a-z])/${2:/upcase}/g}();",
			"$0",
			"};",
			"#endif // ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H"
		],
		"description": "根据文件名生成 Godot Class 默认的 Header 模板"
	},

解析

${TM_FILENAME_BASE/(^|_)([a-z])/${2:/upcase}/g}
    (^|_):匹配行首或下划线(但不用于替换)
    ([a-z]):捕获紧跟在行首或下划线后的小写字母(这是我们想要大写的部分)
    |\\.*:或者匹配从第一个 . 开始到结尾的所有内容(如 .h),目的是忽略扩展名
替换部分:
    ${2:/upcase}
只保留第 2 个捕获组(即字母),并用 /upcase 将其转为大写
未匹配的部分(如下划线、扩展名)被丢弃

TS 中生成 PascalCase 类名

    "Class from filename": {
        "prefix": "cls",
        "body": [
            "class ${TM_FILENAME/(.*)\\..+/${1:/capitalize}/} {",
            "\tconstructor() {",
            "\t\t$0",
            "\t}",
            "}"
        ]
    }

TS 中快速添加 try-catch 包裹代码

    "Wrap in try-catch": {
        "prefix": "try",
        "body": [
            "try {",
            "\t$TM_SELECTED_TEXT",
            "} catch (${1:err}) {",
            "\tconsole.error($1);",
            "\t$0",
            "}"
        ]
    }

选中代码 → 输入 try → 自动包裹。

自动生成 Code Snippets

在插件中搜索 Snippet Generator,并安装 wenfangdu.snippet-generator 该插件

Snippets 文件同步

个人片段

  1. 在 VSCode 中登录个人微软账号,Ctrl+Shift+P 输入 Settings Sync: Configure 并勾选 snippets 选择
  2. 立即同步:Ctrl+Shift+P 输入 Settings Sync: Sync Now

项目片段

.vscode/ 下创建 snippets/ 目录,该项目中的代码片段利于团队共享

参考