片段变量在某些位置变换

时间:2018-03-05 20:52:48

标签: visual-studio-code code-snippets

例如:

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

函数setVisibilityFilter的名称有camelCase。书写版本中的大写字母与下划线分隔相同:SET_VISIBILITY_FILTER

我想制作一个片段。我希望在输入片段变量中的任何文本后,在第二位,由此文本创建由下划线分隔的大写字符。

所以我不必第二次写它,只能用大写字母......

是否可以在代码段中进行操作以及如何操作?

2 个答案:

答案 0 :(得分:1)

你可能正在寻找这样的东西:

    "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"
    }

此代码段必须通过' insert snippet'命令,选择了动作创建者名称(示例用法:http://recordit.co/o8u3lvPsIe)。

注意:使用TM_SELECTED_TEXT是必要的,因为VSCode目前不支持转换代码段占位符(请参阅功能请求:https://github.com/Microsoft/vscode/issues/34683

答案 1 :(得分:1)

vscode 1.25确实在代码段占位符上添加了转换,因此不需要预选。此版本有效,并且可以使用任何数量的驼峰词,例如“ 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"
}

请参阅我的类似答案convert from camelCase to all CAPS_WITH_SEPARATORS