Visual studio code 从所有选定变量创建对象的扩展
我正在寻找一个vscode扩展,可以采取这样的功能Visual studio code 从所有选定变量创建对象的扩展,visual-studio-code,vscode-snippets,Visual Studio Code,Vscode Snippets,我正在寻找一个vscode扩展,可以采取这样的功能 const hello = () => { const name = () => {} const age = () => {} const height = () => {} const location = () => {} } 并在函数中添加并创建所有declare变量的对象: const hello = () => { const name = () =>
const hello = () => {
const name = () => {}
const age = () => {}
const height = () => {}
const location = () => {}
}
并在函数中添加并创建所有declare变量的对象:
const hello = () => {
const name = () => {}
const age = () => {}
const height = () => {}
const location = () => {}
return { name, age, height, location }
}
您可以通过一个代码段和一个键绑定来实现这一点 在代码段文件中:
"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"
}
},
这段代码看起来有点毛茸茸的,但大部分都是微调的,也许你可以不用。注释后的代码将产生:
返回{name,age,height,location,}
//注意最后一个条目后面的额外,
我将解释完整的转换:
“${TM\u CURRENT\u LINE/^(\\s*).$/$1/}返回{${TM\u SELECTED\u TEXT/\\s*const\\s+(.*)\\b[^\\}]*((\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
第一部分${TM_CURRENT_LINE/^(\\s*).$/$1/}
仅插入与所选内容最后一行之前相同数量的空白,用于缩进
这部分${TM\u SELECTED\u TEXT/\\s*const\\s+(.*)\\b[^\\}]*((\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)/
将变量/函数名、您的“名称”、“年龄”等放入正则表达式的捕获组1中
该正则表达式末尾的这部分[^\\}]*((\\\\\\s)|(\\}))
用于确定是否有其他行条目,如果有,则将,
添加到变量列表的末尾。因此,如果末尾有}\s
,则将进入捕获组3。如果末尾只有}
,并且在您的选择中没有其他后续行,那么将是捕获组4,而没有捕获组3
这一点很重要,因为${3:+,}
是一种条件转换,表示是否有组3-最后一个条目不会有组3,因为它后面没有换行符-如果有组3,则添加,
。因此,完整的正则表达式转换将产生
返回{姓名、年龄、身高、位置}
因此,为了正确使用缩进和逗号,需要进行大量的内务处理,并且在vscode中需要进行必要的双重转义。实际的正则表达式非常简单。下面是一个演示:
用法:只需确保完全选择所需的代码范围,就像在演示中一样,例如不要部分选择第一行或最后一行。这真的很酷。它对大多数函数都不起作用:constuserreadbyid=(id:number)=>userFindOne({id})
。不,这与问题中的示例不同,例如,我在正则表达式中使用了noconst
。我可以看看是否可以为这个新用例修改它。将const
设置为可选…可能就足够了。请编辑您的问题,以包括此新示例的精确格式和所需结果的精确格式。谢谢