vs代码应该支持用户定义的片段中的变电站,即变换。但是它仅对(内置)变量有效,而对占位符无效。
请参见以下代码段:
"substitution test" : {
"prefix" : "abc",
"body": [
"${TM_FILENAME}",
"${TM_FILENAME/^([^.]+)\\..+$/$1/}",
"${TM_FILENAME/^([^.]+)\\..+$/${1:/capitalize}/}",
"${TM_FILENAME/^([^.]+)\\..+$/${1:/upcase}/}",
"${2:showMeInAllCapsWhenReferenced}",
"${2/upcase}"
]
}
第1-4行的输出符合预期:
users.actions.ts
users
Users
USERS
在第5行中有一个占位符,我在第6行中再次引用了它。我希望它同时显示两次,一次是我键入它,另一次是全大写。例如:
fooFoo
FOOFOO
但是实际输出是
showMeInAllCapsWhenReferenced
${2/upcase}
引用的占位符(按我的输入)是否可以替换/转换?
答案 0 :(得分:0)
您的最后两行应该是:
"${2:showMeInAllCapsWhenReferenced}",
"${2/(.*)/${1:/upcase}/}"
最后一个选项卡之后,转换实际上已应用(因此从技术上讲,不是在“键入时”替换占位符)。
插入的文本与正则表达式和匹配项匹配 或匹配项(取决于选项)被替换为 指定的替换格式文本。
因此,您不能像在第5行中那样仅使用:/ upcase而不进行正则表达式捕获-它只能转换正则表达式 match 。
查看grammar部分:
transform :: ='/'regex'/'(格式|文本)+'/'选项
format :: ='$'int | '$ {'int'}'
| '${' int ':' '/upcase' | '/downcase' | '/capitalize' '}' | '${' int ':+' if '}' | '${' int ':?' if ':' else '}' | '${' int ':-' else '}' | '${' int ':' else '}'
我们看到:/ upcase必须遵循正则表达式。