[英]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.