https://code.visualstudio.com/docs/editor/userdefinedsnippets#_placeholdertransform
我的目的是在要插入的代码段的上下文中自动设置类名称。 VSCode本身不支持类名或方法名,但是支持文件名。
我的文件名非常类似于类名:
foo-bar.ts
代表class FooBar
。
这是我当前的代码段,其中我可以使用VSCode提供的本机“大写”语法将"foo-bar"
转换为"Foo-bar"
。
TM_FILENAME_BASE
是一个本地变量,它将提取不带扩展名的文件名:
"My Snippet": {
"scope": "typescript",
"prefix": "snippet",
"body": [
"${1}() {",
"\treturn this.get(${TM_FILENAME_BASE/(.*)/${1:/capitalize}/}.FIELD.${3});",
"}",
"",
"$0"
],
"description": "Creates a function wrapper for a model's attribute."
}
我想将“ foo-bar”转换为“ FooBar”。
答案 0 :(得分:4)
尝试一下:
"My Snippet": {
"scope": "typescript",
"prefix": "snippet",
"body": [
"${1}() {",
"\treturn this.get(${TM_FILENAME_BASE/([a-z]*)-*([a-z]*)/${1:/capitalize}${2:/capitalize}/g}.FIELD.${3});",
"}",
"",
"$0"
],
"description": "Creates a function wrapper for a model's attribute."
}
如果文件的长度为两个或多个段,例如foo-bar.ts或foo-bar-zoo.ts等,则可以使用
答案 1 :(得分:0)
以其他示例补充Mark的出色答案可能会有用。
在我的情况下,我想取一个名称-作为选定的文本-并将其转换为Swift代码,以实例化一个新类,并传入变量名称和电子邮件地址。
例如,我选择John Smith
作为名字,姓氏并转换为:
let johnSmith = User(name: "John Smith", email: "john.smith@foorbar.com")
此代码段如下:
"User": {
"prefix": "u",
"body": [
"\tlet ${TM_SELECTED_TEXT/([a-zA-Z]*) *([a-zA-Z]*)/${1:/downcase}$2/} = User(name: \"${TM_SELECTED_TEXT}\", email: \"${TM_SELECTED_TEXT/([a-zA-Z]*) *([a-zA-Z]*)/${1:/downcase}.${2:/downcase}/}@foobar.com\")\n",
],
"description": "Create User with name and email"
}