在 VsCode 中按键执行蝙蝠文件



我正在为 vulkan 编写着色器,必须将其编译为 spir-v。我有一个非常好的批处理文件,它将使用 GLSlangvalidator 为我构建着色器。我正在尝试按键在 VsCode 中运行我的批处理文件,以便我可以检查我的代码是否存在错误并构建它。我有以下几点:

{
"key": "f5",
"label": "build",
"type": "shell",
"command": "workbench.action.terminal.sendSequence",
"args" : {"text": ".\compile.bat"},
"presentation" : {
"reveal": "always"
}

这几乎有效 - 但我仍然必须专注于内置的终端面板并按回车键。当然有一种方法可以执行命令,而不仅仅是输入字符串? 谢谢!

tasks.json中,创建一个任务来运行.bat。像这样:

{
"label": "MY_TASK",
"type": "shell",
"command": "MY_BAT_FILE.bat",
"presentation": {"echo": true, "reveal": "always", "focus": false, "panel": "shared", "showReuseMessage": false, "clear": true},
"group": {"kind": "build", "isDefault": true},
},

然后,使用Tasks: Run Build Task热键(默认情况下按CtrlShiftB(。


您可以有多个这样的任务。

最多一个任务可以有"isDefault": true,即CtrlShiftB应该运行的那个。

您可以通过向keybindings.json添加以下内容来为这些任务分配自定义热键:

{"key": "f5", "command": "workbench.action.tasks.runTask", "args": "MY_TASK"},
//       ^~ key                                                     ^~~~~~~ task name
{
"key": "alt+5",
// "label": "build",               // no effect in a keybinding
// "type": "shell",                // no effect in a keybinding
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": ".//test.batu000D"
// },
// "presentation": {              // no effect in a keybinding
// "reveal": "always"
// },
},

我注释掉的那些键和值在此键绑定中不起作用。 他们会进入一项任务。 如果这些对你很重要,那么你应该选择另一个答案中的任务方法。 如果您想presentation确保终端打开,则可以在宏键绑定中将sendSequence调用与terminal.focus结合起来,例如:

{
"key": "alt+3",
"command": "extension.multiCommand.execute",
"args": {
"sequence": [
"terminal.focus",
{
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": ".//test.batu000D"
}
}
]
},
}

否则,您非常接近初始键绑定。 只需使用 unicode 字符u000D在发送到终端的文本末尾添加返回,它就会立即运行。

因此,如果您在触发键绑定之前或之后手动打开终端,这就足够了:

{
"key": "alt+5",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": ".//test.batu000D"   // these path separators work for me on Windows
}
}

最新更新