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

时间:2018-10-12 09:22:05

标签: visual-studio-code vscode-settings vscode-snippets

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

这可能吗? In the documentation他们说范围是基于language identifier的,但是我只是看到了一种为那里的每种语言添加另一种扩展的方法。

1 个答案:

答案 0 :(得分:1)

您可以针对摘要执行此操作。在您的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文件中有效。

请参见a when clause acting as a regular expression, in keybindings documentation

  

键值when子句运算符

     

when子句的键值对运算符。表达方式   key =~ value将右手侧视为   匹配左手边。例如,贡献背景   所有Docker文件的菜单项,可以使用:

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

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