VSCode自定义C++代码片段 根据变量声明自动生成getter/setter
问题原因
你代码片段中写的${1:/downcase}属于错误的语法,VS Code 代码片段的大小写转换必须使用完整的正则匹配转换结构,不能直接在占位符后加/downcase后缀实现转小写。
触发式生成代码片段修复方案
修改后的代码片段支持任意基础数据类型,转小写逻辑可正常生效,同时修复了原代码中getter函数缺右大括号的语法问题:
"C++ 变量生成getter setter": { "prefix": "intsetget", "body": [ "${2:int} ${1:VARNM};", "$2 ${1/(.*)/${1:/downcase}/g}(){return ${1};}", "void ${1/(.*)/${1:/downcase}/g}($2 val){${1} = val;}" ], "description": "生成全大写变量对应的小写命名getter、setter函数" }
使用说明:输入触发词intsetget后,第一个光标位置输入全大写变量名,按Tab跳转后可修改默认的int类型为double、char等任意基础类型,再次按Tab即可完成生成。
选中现有变量行直接生成方案
如果需要选中已经写好的变量声明行(比如int INTVAR;)一键替换成目标代码,可以使用以下代码片段,适配任意单单词基础类型的变量:
"C++ 选中变量生成getter setter": { "prefix": "cppgetsetselect", "body": [ "$TM_SELECTED_TEXT", "${TM_SELECTED_TEXT/^(\\w+)\\s+(\\w+);$/$1 ${2:/downcase}/g}() { return ${TM_SELECTED_TEXT/^(\\w+)\\s+(\\w+);$/$2/g}; }", "void ${TM_SELECTED_TEXT/^(\\w+)\\s+(\\w+);$/${2:/downcase}/g}(${TM_SELECTED_TEXT/^(\\w+)\\s+(\\w+);$/$1/g} val) { ${TM_SELECTED_TEXT/^(\\w+)\\s+(\\w+);$/$2/g} = val; }" ], "description": "选中已写好的变量声明行生成对应getter、setter" }
使用说明:可以为该片段绑定自定义快捷键,选中变量行后按下快捷键即可直接生成目标代码。
内容的提问来源于stack exchange,提问作者Tryer
相关产品推荐
相关产品推荐

