我可以在vs代码中为多种语言配置task.json文件吗?

我可以在vs代码中为多种语言配置task.json文件吗?,json,visual-studio-code,vscode-settings,vscode-tasks,Json,Visual Studio Code,Vscode Settings,Vscode Tasks,我想在VS代码中配置一个tasks.json文件来运行python和java代码,只需按一下: Ctrl+Shift+B 配置了Python和Java,但它需要两个不同的tasks.json文件 但是我可以在.vscode文件夹中保留一个tasks.json文件 如何将两个配置文件合并到tasks.json文件中 对于Python: { "version": "2.0.0", "tasks": [{ "la

我想在VS代码中配置一个
tasks.json
文件来运行python和java代码,只需按一下:

  • Ctrl+Shift+B
配置了Python和Java,但它需要两个不同的
tasks.json
文件

但是我可以在
.vscode
文件夹中保留一个
tasks.json
文件

如何将两个配置文件合并到tasks.json文件中

对于Python:

{
  "version": "2.0.0",
  "tasks": [{
    "label": "Compile and run",
    "type": "shell",
    "command": "",
    "args": [
      "/usr/bin/time",
      "-v",
      "--output",
      "sys.txt",
      "timeout",
      "5",
      "python3",
      "${relativeFile}",
      "<",
      "input.txt",
      ">",
      "output.txt",
    ],
    "group": {
      "kind": "build",
      "isDefault": true
    },
    "problemMatcher": {
      "owner": "py",
      "fileLocation": [
        "relative",
        "${workspaceRoot}"
      ],
      "pattern": {
        "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
        "file": 1,
        "line": 2,
        "column": 3,
        "severity": 4,
        "message": 5
      }
    }
  }],


}
{
“版本”:“2.0.0”,
“任务”:[{
“标签”:“编译并运行”,
“类型”:“外壳”,
“命令”:“,
“args”:[
“/usr/bin/time”,
“-v”,
“--输出”,
“sys.txt”,
“超时”,
"5",
“蟒蛇3号”,
“${relativeFile}”,
"",
“output.txt”,
],
“集团”:{
“种类”:“建造”,
“isDefault”:正确
},
“问题匹配者”:{
“所有者”:“py”,
“文件位置”:[
“亲属”,
“${workspaceRoot}”
],
“模式”:{
“regexp:“^(.*):(\\d+):(\\d+):\\s+(警告|错误):\\s+(.*)$”,
“文件”:1,
"线":2,,
"栏目":3,,
“严重性”:4,
“信息”:5
}
}
}],
}
对于Java:

{
  "version": "2.0.0",
  "tasks": [{
    "label": "Compile and run",
    "type": "shell",
    "command": "",
    "args": [
      "/usr/bin/time",
      "-v",
      "--output",
      "sys.txt",
      "timeout",
      "5",
      "java",
      "${relativeFile}",
      "<",
      "input.txt",
      ">",
      "output.txt",
    ],
    "group": {
      "kind": "build",
      "isDefault": true
    },
    "problemMatcher": {
      "owner": "java",
      "fileLocation": [
        "relative",
        "${workspaceRoot}"
      ],
      "pattern": {
        "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
        "file": 1,
        "line": 2,
        "column": 3,
        "severity": 4,
        "message": 5
      }
    }
  }],
}
{
“版本”:“2.0.0”,
“任务”:[{
“标签”:“编译并运行”,
“类型”:“外壳”,
“命令”:“,
“args”:[
“/usr/bin/time”,
“-v”,
“--输出”,
“sys.txt”,
“超时”,
"5",
“爪哇”,
“${relativeFile}”,
"",
“output.txt”,
],
“集团”:{
“种类”:“建造”,
“isDefault”:正确
},
“问题匹配者”:{
“所有者”:“java”,
“文件位置”:[
“亲属”,
“${workspaceRoot}”
],
“模式”:{
“regexp:“^(.*):(\\d+):(\\d+):\\s+(警告|错误):\\s+(.*)$”,
“文件”:1,
"线":2,,
"栏目":3,,
“严重性”:4,
“信息”:5
}
}
}],
}

很简单,您只需合并
任务“:[]
数组并对任务进行唯一命名。tasks数组可以包含任意数量的tasks对象,有些对象也可以相互依赖

在这里,当您使用此选项和
CTRL+SHIFT+B
时,它将显示选择任务的选项

{
“版本”:“2.0.0”,
“任务”:[
{
“标签”:“编译并运行Python”,
“类型”:“外壳”,
“命令”:“,
“args”:[
“/usr/bin/time”,
“-v”,
“--输出”,
“sys.txt”,
“超时”,
"5",
“蟒蛇3号”,
“${relativeFile}”,
"",
“output.txt”
],
“集团”:{
“种类”:“建造”,
“isDefault”:正确
},
“问题匹配者”:{
“所有者”:“py”,
“文件位置”:[“相对”,“${workspaceRoot}],
“模式”:{
“regexp:“^(.*):(\\d+):(\\d+):\\s+(警告|错误):\\s+(.*)$”,
“文件”:1,
"线":2,,
"栏目":3,,
“严重性”:4,
“信息”:5
}
}
},
{
“标签”:“编译并运行Java”,
“类型”:“外壳”,
“命令”:“,
“args”:[
“/usr/bin/time”,
“-v”,
“--输出”,
“sys.txt”,
“超时”,
"5",
“爪哇”,
“${relativeFile}”,
"",
“output.txt”
],
“集团”:{
“种类”:“建造”,
“isDefault”:正确
},
“问题匹配者”:{
“所有者”:“java”,
“文件位置”:[“相对”,“${workspaceRoot}],
“模式”:{
“regexp:“^(.*):(\\d+):(\\d+):\\s+(警告|错误):\\s+(.*)$”,
“文件”:1,
"线":2,,
"栏目":3,,
“严重性”:4,
“信息”:5
}
}
}
]
}
因为无法根据文件扩展名()告诉VSCode要运行哪个任务

您始终可以为生成任务创建键盘快捷键并执行它,而无需从弹出窗口中选择它。例如,对于下面的
tasks.json
可以通过将其添加到
keybindings.json
文件中来创建快捷方式

[{
  "key": "ctrl+alt+h",
  "command": "workbench.action.tasks.runTask",
  "args": "Compile and run Python" // this text should match exactly with task "label"
}]
如果您打开了java或python文件(并且两个任务按照@tHeSID的建议“合并”),则只需重载键绑定:

  {
    "key": "ctrl+shift+B",
    "command": "workbench.action.tasks.runTask",
    "args": "Compile and run Python",
    "when": "editorLangId == python"
  },
  {
    "key": "ctrl+shift+B",
    "command": "workbench.action.tasks.runTask",
    "args": "Compile and run Java",
    "when": "editorLangId == java"
  },

有没有什么方法可以让它自动理解java或python文件的执行?我的意思是,如果我按照你说的做,它将提示选择java或python!到目前为止还没有,您可以为任务创建快捷方式,但我已在Answer中添加了如何执行此操作。您的任务文档链接是v0.1.0版本(VSC