簡體   English   中英

如何將片段占位符從 CamelCase 轉換為 snake_case

[英]How to convert snippet placeholder from CamelCase to snake_case

我想創建一個 VS 代碼片段,我在CamelCase中輸入一個部分,並且相同的字符串是snake_case在片段中的其他位置的蛇形案例。

基於這個 SO post這是我嘗試的片段,但我有一個尾隨_需要手動刪除,不理想:

"test": {
    "prefix": "test",
    "body": "${1} -> ${1/([A-Z])+([a-z]+)/${1:/downcase}${2}_/g}"
},
"camelToSnakeCase": {
  "prefix": "test",
  "body": [

    "${1} -> ${1/([A-Z][a-z]+$)|([A-Z][a-z]+)/${1:/downcase}${2:/downcase}${2:+_}/g}"
  ],
  "description": "transform from CamelCase to snake_case"
}

為了區分最后一個捕獲組(如Abcd )和前面的捕獲組,我使用了一種替代方法:

([AZ][az]+$)|([AZ][az]+)必須是這個順序

因此,由於$指示符,第 1 組將位於輸入的末尾,而第 2 組不會在末尾。 並且第 2 組在他們之后總是至少還有一組。 然后,使用條件${2:+_}僅在存在組 2 時插入下划線 - 因為必須有以下組 1。


如果您有不同的工作流程,此鍵綁定版本也適用:

{
    "key": "alt+3",                        // whatever keybinding you wish
    "command": "extension.multiCommand.execute",
    "args": {
        "sequence": [
            "cursorWordLeftSelect",            
            "editor.action.transformToSnakecase",
            "editor.action.transformToLowercase",
            // "cursorLineEnd"                   // if you want this
        ]
    },
    "when": "editorTextFocus && !editorHasSelection"
}

鍵入您的單詞並觸發鍵綁定。 使用宏擴展multi-command

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM