-
"${TM_DIRECTORY/(.*)/${1:/pascalcase}/g}" you didn't really provide enough info on how you are getting your pathName, so this is just one possibility, perhaps RELATIVE_FILEPATH` 适合你。
-
"$1 = createMessage(${1/(([^A-Z]+)(\\w*))/${2:/upcase}_${3:/upcase}/});"
将输入 sendData 分成 2 个捕获组 $2 和 $3。在转换中将它们都大写。
"sendData": {
"prefix": "cm",
"body": [
"${TM_DIRECTORY/(.*)/${1:/pascalcase}/}",
// simpler form if ONLY two "words" like "sendData"
"$1 = createMessage(${1/(([^A-Z]+)(\\w*))/${2:/upcase}_${3:/upcase}/});",
// for any number of words, like "sendDataTwoThreeFour" use this:
"$1 = createMessage(${1/([a-z]*)([A-Z][a-z]*)/${1:/upcase}${2:+_}${2:/upcase}/g});"
]
}
${1/([a-z]*)([A-Z][a-z]*)/${1:/upcase}${2:+_}${2:/upcase}/g} 将第一个单词“send”放入捕获组 1,将“Data”或“Two”等其他单词放入 subsequent matches' 捕获组 2。[所以g最后的标志很重要。]
大写组 1。然后如果有组 2 ${2:+_} 添加_。然后大写 group2。
唯一不起作用的情况是send,没有别的。它仍然会打印出所有文本,如果它本身没有大写 send。可能有一种方法可以包含它...
编辑:这里是:
"$1 = createMessage(${1/([a-z]*)([A-Z][a-z]*)|([a-z]+)/${1:/upcase}${3:/upcase}${2:+_}${2:/upcase}/g});"
现在一个裸露的send 将被放入第 3 组并向上转换。剩下的比赛不会有第 3 组,所以${3:/upcase} 什么都不返回。