Хотя вы не можете напрямую использовать переменные в выборе фрагмента, вы можете обойти это следующим образом:
"Print to console": {
"scope": "javascript,typescript",
"prefix": "debug",
"body": [
// moved brackets in the choice
"console.log('[${1|Debug,Server],fileName|}]','${2:~Line: $TM_LINE_NUMBER ~ File:$TM_FILENAME}',${3:$TM_SELECTED_TEXT}); //debug",
"$4"
],
"description": "Log output to console"
},
"getfileName": {
"scope": "javascript,typescript",
"prefix": "fileName", // <= same exact prefix as appears in the choice above
"body": [
"$TM_FILENAME"
],
"description": "get the file name"
}
Идея состоит в том, что выбор fileName
на самом деле является еще одним фрагментом, который вы можете активировать после выбора. После выбора fileName
вам нужно будет нажать Ctrl+Пробел, чтобы открыть второй фрагмент. Это немного больше работы, но позволяет вам получить переменное поведение при выборе фрагмента. А во втором фрагменте вы можете добавить или изменить имя файла по своему усмотрению.
Кроме того, иногда вам нужно немного изменить выбор. Я изменил ваш, но результат тот же. В противном случае печатается [fileName]
, и это не будет рассматриваться как совпадение с другим префиксом fileName
. Хотя в вашем случае вы можете оставить это как:
"console.log('${1|[Debug],[Server],[fileName]|}','${2:~Line: $TM_LINE_NUMBER ~ File:$TM_FILENAME}',${3:$TM_SELECTED_TEXT}); //debug",
в первом фрагменте, а затем сделайте второй префикс следующим образом:
"prefix": "fileName]", // note the trailing bracket
Тот же результат, просто не забудьте настроить второй префикс, чтобы он соответствовал тому, что на самом деле выводится при выборе выбора, иначе он не будет работать.
![переменная выбора сниппета](https://i.stack.imgur.com/iAT1e.gif)
person
Mark
schedule
26.02.2021