Могу ли я добавить фрагменты, отфильтрованные по имени файла?
Я хочу добавить пару фрагментов для использования при создании модульных тестов javascript/typcript, но я не нахожу способа установить глобальную область действия фрагмента на *.spec.ts
или же *.spec.js
Это возможно? В документации говорится, что область действия основана на идентификаторе языка, но я просто вижу способ добавить еще одно расширение для каждого языка.
0 ответов
Вы можете сделать это для фрагментов. В вашем keybindings.json:
{
"key": "shift+alt+2",
"command": "editor.action.insertSnippet",
"when": "resourceFilename =~ /\\.spec\\.[tj]s$/",
// with the snippet text directly in the keybinding
"args": {
"snippet": "console.log($1)$0"
}
},
или это связывание клавиш:
{
"key": "shift+alt+2",
"command": "editor.action.insertSnippet",
"when": "resourceFilename =~ /\\.spec\\.[tj]s$/",
"args": {
"name": "unit tests"
}
}
с этим фрагментом в файле фрагмента:
"unit tests": {
// "prefix": "", // not used here
"body": [
"console.log($1)$0",
],
Ключом к ограничению области действия фрагмента является when
пункт:
"when": "resourceFilename =~ /\\.spec\\.[tj]s$/",
который в качестве регулярного выражения будет искать имя файла, заканчивающееся на .spec.ts
или же .spec.js
(обратите внимание, что вам нужно двойные побеги до периода). Так что используйте resourceFileName
и построить регулярное выражение, которое выглядит в конце этого.
Теперь выбранная вами связка клавиш будет работать в *.spec.ts
или же *.spec.js
только файл
Смотрите предложение when, действующее как регулярное выражение, в документации по привязкам клавиш:
ключ-значение, когда оператор оператора
Существует оператор пары ключ-значение для
when
статьи. Выражениеkey =~ value
рассматривает правую часть как регулярное выражение для сопоставления с левой стороной. Например, чтобы добавить элементы контекстного меню для всех файлов Docker, можно использовать:
"when": "resourceFilename =~ /docker/"
Я нашел это благодаря этой проблеме: имя ресурса с двумя точками не работает