Преобразование фрагмента в некоторых местах

Например:

export const setVisibilityFilter = (filter) => ({
  type: 'SET_VISIBILITY_FILTER',
  filter
})

Наименование функции setVisibilityFilter Имеет CamelCase. То же самое в письменной версии заглавными буквами, разделенными подчеркиванием: SET_VISIBILITY_FILTER

Я хочу сделать фрагмент из этого. Я хочу, чтобы после ввода любого текста в переменную сниппета, во-вторых, из этого текста были созданы символы верхнего регистра, разделенные подчеркиванием.

Чтобы мне не приходилось писать это второй раз, только большими буквами...

Возможно ли это во фрагменте кода и как это сделать?

2 ответа

Решение

vscode 1.25 действительно добавил преобразования для заполнителей фрагмента, поэтому нет необходимости в предварительном выборе. Эта версия работает, и с любым количеством слов camelCase, например, "camelCase","camelCaseCaseCase", так далее.

"test3": {
    "prefix": "seps",
    "body": [
        "export const $1 = (filter) => ({",
            "type: '${1/([a-z]*)(([A-Z])+([a-z]+))?/${1:/upcase}${2:+_}$3${4:/upcase}/g}',",
            "filter",
        "})"
    ],
    "description": "underscore separators"
}

Посмотрите мой аналогичный ответ конвертировать из CamelCase для всех CAPS_WITH_SEPARATORS

Вы можете искать что-то вроде этого:

    "Redux_Action_Creator": {
        "prefix": "act",
        "body": [
            "export const ${TM_SELECTED_TEXT} = (${1}) => ({",
            "\ttype: '${TM_SELECTED_TEXT/(^[a-z$]+).*/${1:/upcase}/g}${TM_SELECTED_TEXT/[a-z$]*([A-Z0-9][a-z$]+)/_${1:/upcase}/g}'",
            "\t$0",
            "});",
            ""
        ],
        "description": "[Surrounding] Export action creator returning plain action"
    }

Этот фрагмент должен вызываться с помощью команды "вставить фрагмент" с выбранным именем создателя действия (пример использования: http://recordit.co/o8u3lvPsIe).

Примечание. Использование TM_SELECTED_TEXT необходимо, поскольку VSCode в настоящее время не поддерживает преобразование местозаполнителей фрагментов (см. Запрос функции: https://github.com/Microsoft/vscode/issues/34683).

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