如何在 VS 代码中将快捷键设置为 运行 我工作目录中的 .bat 文件?
How can I set a shorcut key in VS code to run a .bat file in my working directory?
在我的研究中,我使用有限元方法,我们使用 Abaqus 的求解器,它使用用 Fortran 制作的子程序,我使用 vs 代码来编辑它们。因此,对于 运行 我的代码,我制作了一个批处理文件,使这个过程更简单(以避免在 cmd 中键入许多指令)。
在这张图片中你可以看到我工作目录中的文件,如果我可以设置一个快捷方式来执行 principal.bat 文件和另一个 terminate.bat 文件,这将节省我很多时间直接来自 vs 代码:
感谢任何帮助,我尝试为此目的设置一个 task.json 文件,但我有点迷路。
您可以添加调试配置,然后使用 F5 启动该配置。
类型 cppvsdbg
在这里并不重要,因为您不能(也不想)调试批处理文件。
Shift-F5 终止批处理
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Start batch",
"type": "cppvsdbg",
"request": "launch",
"program": "cmd.exe",
"args": [
"/c",
"principal.bat"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false
}
]
}
您可以使用扩展名multi-command在终端输入批处理文件命令
将此添加到您的 settings.json
:
"multiCommand.commands": [
{
"command": "multiCommand.callPrincipal",
"sequence": [
{ "command": "workbench.action.terminal.sendSequence",
"args": { "text": "principle.bat\u000D" }
}
]
},
{
"command": "multiCommand.callTerminate",
"sequence": [
{ "command": "workbench.action.terminal.sendSequence",
"args": { "text": "terminate.bat\u000D" }
}
]
}
]
然后在keybindings.json
中定义2个键绑定
{
"key": "shift+alt+F1", // or any other key combo
"command": "multiCommand.callPrincipal"
},
{
"key": "shift+alt+F2", // or any other key combo
"command": "multiCommand.callTerminate"
}
您可以添加 when
子句来限制键绑定的有效性
编辑
当你只需要 1 个终端命令时不需要使用 multi-command
扩展,你可以定义键绑定的参数
{
"key": "shift+alt+F1", // or any other key combo
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "principle.bat\u000D" }
},
{
"key": "shift+alt+F2", // or any other key combo
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "terminate.bat\u000D" }
}
或者您可以定义 2 个任务来启动批处理文件,然后 运行 使用 Terminal | 运行 任务....
如果您指定一个作为构建任务,您可以使用快捷键。
我找不到 运行 命名任务的命令,因此可以在键绑定中使用它。
在我的研究中,我使用有限元方法,我们使用 Abaqus 的求解器,它使用用 Fortran 制作的子程序,我使用 vs 代码来编辑它们。因此,对于 运行 我的代码,我制作了一个批处理文件,使这个过程更简单(以避免在 cmd 中键入许多指令)。
在这张图片中你可以看到我工作目录中的文件,如果我可以设置一个快捷方式来执行 principal.bat 文件和另一个 terminate.bat 文件,这将节省我很多时间直接来自 vs 代码:
您可以添加调试配置,然后使用 F5 启动该配置。
类型 cppvsdbg
在这里并不重要,因为您不能(也不想)调试批处理文件。
Shift-F5 终止批处理
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Start batch",
"type": "cppvsdbg",
"request": "launch",
"program": "cmd.exe",
"args": [
"/c",
"principal.bat"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false
}
]
}
您可以使用扩展名multi-command在终端输入批处理文件命令
将此添加到您的 settings.json
:
"multiCommand.commands": [
{
"command": "multiCommand.callPrincipal",
"sequence": [
{ "command": "workbench.action.terminal.sendSequence",
"args": { "text": "principle.bat\u000D" }
}
]
},
{
"command": "multiCommand.callTerminate",
"sequence": [
{ "command": "workbench.action.terminal.sendSequence",
"args": { "text": "terminate.bat\u000D" }
}
]
}
]
然后在keybindings.json
{
"key": "shift+alt+F1", // or any other key combo
"command": "multiCommand.callPrincipal"
},
{
"key": "shift+alt+F2", // or any other key combo
"command": "multiCommand.callTerminate"
}
您可以添加 when
子句来限制键绑定的有效性
编辑
当你只需要 1 个终端命令时不需要使用 multi-command
扩展,你可以定义键绑定的参数
{
"key": "shift+alt+F1", // or any other key combo
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "principle.bat\u000D" }
},
{
"key": "shift+alt+F2", // or any other key combo
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "terminate.bat\u000D" }
}
或者您可以定义 2 个任务来启动批处理文件,然后 运行 使用 Terminal | 运行 任务....
如果您指定一个作为构建任务,您可以使用快捷键。
我找不到 运行 命名任务的命令,因此可以在键绑定中使用它。