VSCode -自定义代码片段,从选定的c++声明中创建多个不同的行



我有一行:

int INTVAR;

我想突出显示这一行,并运行一个代码片段,它自动创建以下三行来代替上面的一行。

int INTVAR;
int intvar() {return INTVAR;}
void intvar(int val){INTVAR = val;}

也就是说,应该自动生成一个函数,它是变量的getter/setter。变量名将始终使用大写字母。getter/setter的名称应该是相同的,只是它们总是小写的。

int也可以是double,char

埃塔:

到目前为止我所尝试/知道的:下面的代码看起来更直接,而不是突出显示这一行,我只输入一次声明,getter/setter就会自动添加。

"int var set get":{
"prefix": "intsetget",
"body":[
"int ${1:VARNM};",
"int ${1:/downcase}(){return ${1};}",
"void ${1:/downcase}(int val){${1} = val;}"
]
}

这个几乎完成了任务,除了setter和getter名称的小写字母不起作用。

下面的代码片段也将处理不同的类型:

"var set get":{
"prefix": "varsetget",
"body":[
"${1:int} ${2:VARNM};",
"$1 ${2/(.*)/${1:/downcase}/}(){return $2;}",
"void ${2/(.*)/${1:/downcase}/}($1 val){$2 = val;}"
]
}

我认为它可以用选定的文本完成,但你必须插入带有键绑定的片段,否则没有选定的文本供片段使用。但是,复制var名称并使用完整的代码片段可能更容易。

编辑

最好使用不同的变量名约定(ALL CAPS通常表示常量)。

要支持fMyVar,f_myVar,mMyVarm_myVar成员名,可以使用

"var set get f m_":{
"prefix": "varsetgetfm",
"body":[
"${1:int} ${2:VARNM};",
"$1 ${2/^(?:f|m)_?([A-Za-z])(.*)|([A-Z].*)$/${1:/downcase}$2${3:/downcase}/}(){return $2;}",
"void ${2/^(?:f|m)_?([A-Za-z])(.*)|([A-Z].*)$/${1:/downcase}$2${3:/downcase}/}($1 val){$2 = val;}"
]
}

最新更新