VS Code: Как преобразовать фрагмент-заполнитель в верхний или нижний регистр?
В VS Code документы для создания пользовательских фрагментов упоминают некоторую грамматику, которая включает в себя опции для /upcase
, /downcase
, а также /capitalize
, но я не могу понять, как его использовать.
Я использую последнюю версию VS Code: Version 1.25.0
на Mac.
Кажется, что этот фрагмент должен преобразовать значение заполнителя в верхний и нижний регистр после его ввода и нажатия табуляции, но это не так:
"test": {
"prefix": "test",
"body": "${1} -> ${1:/upcase} ${1:/downcase}"
},
Поток и ожидаемый результат
- тип
test
- нажмите вкладку, чтобы получить фрагмент.
тип
Asdf
в результате:Asdf -> Asdf Asdf
нажмите вкладку, чтобы получить ожидаемый результат:
Asdf -> ASDF asdf
Текущий результат
asdf -> asdf asdf
5 ответов
Попробуй это:
"test": {
"prefix": "test",
// "body": "${1} -> ${1/(.*)/${1:/upcase}/} > ${1/(.*)/${1:/downcase}/}"
// simpler version below works too
"body": "${1} -> ${1/(.*)/${1:/upcase} ${1:/downcase}/}"
}
Вид решения:
"test": {
"prefix": "test",
"body": "$1 ${1/(.*)/${1:/upcase}/} -> ${1/(.*)/${1:/downcase}/} -> ${1/(.*)/${1:/capitalize}/}"
}
результат:
asdF ASDF -> asdf -> AsdF
Для справки:
Целое число в документах EBNF указывает на группу RegExp, а не на ссылку табуляции, поэтому должно работать:
"test": {
"prefix": "test",
"body": "${1} -> ${1/(Asdf)/${1:/upcase}/} ${1/(Asdf)/${1:/downcase}/}"
}
Док здесь.
Вы также можете использовать заглавные буквы, camelcase, pascalcase, selection, clipboard, random и date.
https://github.com/microsoft/vscode/blob/main/src/vs/editor/contrib/snippet/browser/snippet.md
См. Раздел преобразований переменных вsnippets
раздел руководства.