Это работает:
"Example": {
"prefix": "psc",
"body": [
"${1}",
"${1} -> ${1/([A-Z][a-z]*)([A-Z][a-z]*)?([A-Z][a-z]*)?([A-Z][a-z]*)?/${1:/downcase}${2:+-}${2:/downcase}${3:+-}${3:/downcase}${4:+-}${4:/downcase}/}"
],
"description": "Convert from PascalCase to kebab-case"
},
Обычно я могу заставить их работать в гораздо более короткой версии - используя глобальный модификатор - и, таким образом, для любого количества "слов". Но я не смог этого сделать в этом случае. Выше жестко запрограммировано до четырех «слов», как PascalCaseThreeFour
.
Это работает от одного до четырех «слов», но не будет работать больше, но вам будет легко изменить столько, сколько вы захотите. Для преобразования есть очевидный паттерн:
Конструкция ${3:+-}
, которую вы видите выше, означает, что если есть группа захвата 3, добавьте дефис.
РЕДАКТИРОВАТЬ : следующее упрощение будет обрабатывать любое количество слов в PascalCase:
"${1} -> ${1/([A-Z][a-z]+)/${1:/downcase}-/g}$0"
но приведет к завершению -
примерно так:
PascalCaseThreeFourFive
-> pascal-case-three-four-five-
, если вы не возражаете отступить за конечную черту -
. В противном случае было бы легко включить этот фрагмент в макрос , который затем удалил этот последний штрих.
Кроме того, расширение для случая изменения может работать для вас - похоже, у него есть команда kebab-case.