Фрагменты всегда вставляют текст, где бы ни находился курсор в момент запуска фрагмента - вот почему вы видите поведение, которое вы получаете. Если слово было выбрано впервые, вставка заменит это слово как обычное.
Самый простой способ - просто выбрать текст box
, а затем alt + c и вы получите свой результат. Но с дополнительным шагом выбора.
Вот и решение для макроса.
Используя расширение макроса, например multi-command , установите это в своих настройках . json:
"multiCommand.commands": [
{
"command": "multiCommand.insertConst", // whatever name you want to give it
"sequence": [
"cursorWordLeftSelect",
{
"command": "editor.action.insertSnippet",
"args": {
"snippet": "const $TM_SELECTED_TEXT = $1"
}
}
]
}
]
и некоторые привязки клавиш:
{
"key": "alt+c",
"command": "extension.multiCommand.execute",
"args": { "command": "multiCommand.insertConst" }, // use same name here
"when": "editorTextFocus"
},
или вы можете просто изменить свой фрагмент, чтобы сначала не вводить имя переменной. Вы должны вызвать фрагмент, затем ввести имя переменной tab и затем ее значение следующим образом:
{
"key": "alt+c",
"command": "editor.action.insertSnippet",
"when": "editorTextFocus",
"args": {
"snippet": " const $1 = $2"
}
},