Visual studio code 按文件名或扩展名过滤代码段,如*.spec.ts和*.spec.js?

Visual studio code 按文件名或扩展名过滤代码段,如*.spec.ts和*.spec.js?,visual-studio-code,vscode-settings,vscode-snippets,Visual Studio Code,Vscode Settings,Vscode Snippets,我想在创建javascript/typescript单元测试时添加几个代码段,但我没有找到任何方法将代码段的全局范围设置为*.spec.ts或*.spec.js 这可能吗?他们说范围是基于的,但我只是看到了一种向每种语言添加另一个扩展的方法。您可以对代码段执行此操作。在keybindings.json中: { "key": "shift+alt+2", "command": "editor.action.insertSnippet", "when": "resource

我想在创建javascript/typescript单元测试时添加几个代码段,但我没有找到任何方法将代码段的全局范围设置为
*.spec.ts
*.spec.js


这可能吗?他们说范围是基于的,但我只是看到了一种向每种语言添加另一个扩展的方法。

您可以对代码段执行此操作。在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
文件中工作

见:

子句运算符时的键值

当子句时,
有一个键值对运算符。表情
key=~value
将右侧视为 和左手边比赛。例如,贡献上下文 所有Docker文件的菜单项,可以使用:

我发现这要归功于这个问题:

"when": "resourceFilename =~ /docker/"