0

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

这可能吗?在文档中,他们说范围是基于语言标识符的,但我只是看到了一种为每种语言添加另一个扩展的方法。

4

1 回答 1

2

您可以对片段执行此操作。在您的 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.tsor结尾的文件名.spec.js(请注意,您需要在句点之前进行双重转义)。所以使用resourceFileNameand 构造一个正则表达式来查看它的末尾。

现在您选择的键绑定将仅在 a *.spec.tsor*.spec.js文件中起作用。

请参阅keybindings 文档中充当正则表达式的 when 子句

当子句运算符的键值

when子句有一个键值对运算符。该表达式 key =~ value将右侧视为正则表达式以匹配左侧。例如,要为所有 Docker 文件提供上下文菜单项,可以使用:

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

由于这个问题,我发现了这一点:resourceExtname with two dots not working

于 2019-03-22T04:19:42.800 回答