我可以在 vs 代码中为一种以上的语言配置 task.json 文件吗?
Can I configure a task.json file for more then one language in vs code?
我想在 VS Code 中将 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
}
}
}],
}
对于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
}
}
}],
}
很简单,您只需合并 "tasks":[]
数组并唯一地命名您的任务。任务数组可以包含任意数量的任务对象,有些也可以相互依赖。 More info on VSCode Tasks
在这里,当您使用它和 CTRL + SHIFT + B
时,它会显示 select 任务的选项。
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile and run Python",
"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
}
}
},
{
"label": "Compile and run Java",
"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
}
}
}
]
}
因为无法根据文件扩展名 (See Issue here) 告诉 VSCode 哪个任务 运行。
您始终可以为构建任务创建键盘快捷键并执行它,而无需从弹出窗口中 select。例如,对于下面的 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 的建议“合并”了两个任务),您可以重载键绑定 ala:
{
"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"
},
以防其他人登陆这里。
中得到解决
我想在 VS Code 中将 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
}
}
}],
}
对于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
}
}
}],
}
很简单,您只需合并 "tasks":[]
数组并唯一地命名您的任务。任务数组可以包含任意数量的任务对象,有些也可以相互依赖。 More info on VSCode Tasks
在这里,当您使用它和 CTRL + SHIFT + B
时,它会显示 select 任务的选项。
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile and run Python",
"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
}
}
},
{
"label": "Compile and run Java",
"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
}
}
}
]
}
因为无法根据文件扩展名 (See Issue here) 告诉 VSCode 哪个任务 运行。
您始终可以为构建任务创建键盘快捷键并执行它,而无需从弹出窗口中 select。例如,对于下面的 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 的建议“合并”了两个任务),您可以重载键绑定 ala:
{
"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"
},
以防其他人登陆这里。
中得到解决