让我们看看为什么您的版本${1:/capitalize}
不起作用:
这是您从https://code.visualstudio.com/docs/editor/userdefinedsnippets引用的片段语法的一部分
tabstop ::= '$' int
| '${' int '}'
| '${' int transform '}'
-snip-
transform ::= '/' regex '/' (format | text)+ '/' options
format ::= '$' int | '${' int '}'
| '${' int ':' '/upcase' | '/downcase' | '/capitalize' '}'
所以最初看起来${1:/capitalize}
是正确的,只看上面语法的最后一行似乎
${' int ':' '/capitalize'
是一个有效的选项。但是您必须跟踪语法才能正确使用它。该format
语法只能用于transform
. 我们在以下方面看到了这一点:
transform ::= '/' regex '/' (format | text)+ '/' options
因此,您的版本不包含转换。您没有必要的regex
先行者。所以这些'/upcase' | '/downcase' | '/capitalize'
选项只能用作带有正则表达式的转换的一部分(虽然你可以有一个空的正则表达式,但这对你没有帮助,你仍然需要有正则表达式入口点)。
这是变换的一般形式:
${someInt/regex captures here/do something with the captures here, like ${1:/capitalize} /}
请注意,第一个是制表位 -例如,$someInt
它可能是,但第二个(大写)不是制表位,而是对前面正则表达式中第一个捕获组的引用。因此,转换只能转换正则表达式已捕获的内容。 $1
$1
语法要求format
选项是 a 的一部分transform
,并且转换需要 aregex
和部分$n
中的 'sformat
指的是捕获组而不是制表符变量。
我希望这一切都有意义。