您可以使用代码段和键绑定来做到这一点。
在您的代码段文件中:
"return object": {
"prefix": "_ro",
"body": [
"$TM_SELECTED_TEXT",
// "\treturn { ${TM_SELECTED_TEXT/\\s*const\\s+(.*)\\b.*(\\n)*/$1, /g} }",
"${TM_CURRENT_LINE/^(\\s*).*$/$1/}return { ${TM_SELECTED_TEXT/\\s*const\\s+(.*)\\b[^\\}]*((\\}\\s)|(\\}))/$1${3:+, }/g} }",
],
"description": "Return Object"
},
以及您选择的一些键绑定:
{
"key": "alt+b",
"command": "editor.action.insertSnippet",
"args": {
"name": "return object"
}
},
该片段看起来很毛茸茸,但其中大部分都是微调,也许你可以不用。注释代码将产生:
return { name, age, height, location, }
,
// 注意最后一个条目之后 的额外内容。
我将解释完整的转换:
"${TM_CURRENT_LINE/^(\\s*).*$/$1/}return { ${TM_SELECTED_TEXT/\\s*const\\s+(.*)\\b[^\\}]*((\\}\\s)|(\\}))/$1${3:+, }/g} }",
第一部分${TM_CURRENT_LINE/^(\\s*).*$/$1/}
只是在选择的最后一行之前插入相同数量的空白以用于缩进。
这部分${TM_SELECTED_TEXT/\\s*const\\s+(.*)\\b[^\\}]*((\\}\\s)|(\\}))/
将变量/函数名称、您的“姓名”、“年龄”等放入正则表达式的捕获组 1。
正则表达式101演示
[^\\}]*((\\}\\s)|(\\}))
该正则表达式末尾的这部分用于确定是否有另一个行条目,如果有,则将 添加,
到变量列表的末尾。因此,如果}\s
最后有将进入捕获组 3。如果只有}
在最后并且您的选择中没有其他以下行将是捕获组 4 并且没有捕获组 3。
这很重要,因为这${3:+, }
是一个条件转换,它表示是否有第 3 组 - 最后一个条目不会有,因为选择中没有换行符 - 如果有第 3 组,则添加,
. 所以完整的正则表达式转换会产生
return { name, age, height, location }
因此,为了使缩进和逗号正确,以及在 vscode 中必要的双重转义,有很多家务。实际的正则表达式非常简单。这是一个演示:

用法:只需确保完全选择您想要的代码范围 - 就像在演示中一样 - 例如,不要部分选择第一行或最后一行。