VS Code: Как преобразовать фрагмент-заполнитель в верхний или нижний регистр?

В VS Code документы для создания пользовательских фрагментов упоминают некоторую грамматику, которая включает в себя опции для /upcase, /downcase, а также /capitalize, но я не могу понять, как его использовать.

Я использую последнюю версию VS Code: Version 1.25.0 на Mac.

Кажется, что этот фрагмент должен преобразовать значение заполнителя в верхний и нижний регистр после его ввода и нажатия табуляции, но это не так:

"test": {
    "prefix": "test",
    "body": "${1} -> ${1:/upcase} ${1:/downcase}"
},

Поток и ожидаемый результат

  1. тип test
  2. нажмите вкладку, чтобы получить фрагмент.
  3. тип Asdf в результате:

    Asdf -> Asdf Asdf
    
  4. нажмите вкладку, чтобы получить ожидаемый результат:

    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 раздел руководства.

Другие вопросы по тегам