有没有一种方法可以为运行特定命令在终端中设置快捷键?比如说,我想通过快捷键编译我的TypeScript文件,而不是在终端中输入“tsc”或任何其他变体的命令。(编辑:我知道可以在保存时重新编译TS,但问题仍然是一样的。)
有没有一种方法可以为运行特定命令在终端中设置快捷键?比如说,我想通过快捷键编译我的TypeScript文件,而不是在终端中输入“tsc”或任何其他变体的命令。(编辑:我知道可以在保存时重新编译TS,但问题仍然是一样的。)
通常情况下,您可以设置一个构建任务或其他任务或 npm 脚本,然后使用热键触发它。
还有一种新的方法可以通过将文本发送到终端实现。
例如,在您的键绑定中尝试这个(Preferences: Open Keyboard Shortcuts (JSON)):
{
"key": "ctrl+alt+u",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "node -v\u000D"
}
}
对于一个npm脚本:
{
"key": "ctrl+alt+u",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "npm run-script test\u000D"
}
}
第一步将运行 node -v
命令(\u000D
是回车符,因此它会运行)。我仍然建议实际设置一个构建任务,然后有关键代码可用于运行您的构建任务:Ctrl-shift-B 或者 npm 脚本。
例如,如果您要运行更复杂的脚本,请参见如何将任务绑定到按键绑定 或如何对外部命令进行按键绑定。
编辑:从 v1.32 开始,您现在可以这样做:
{
"key": "ctrl+shift+t",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "tsc '${file}'\u000D" }
}
现在您可以在按键绑定中使用内置变量,例如 ${file}
,使用 sendSequence
命令。为了防止您的目录结构中有名称带有空格的文件夹,我将 ${file}
用单引号括起来。而\u000D
是回车符。
您可以利用VSCode tasks
来完成此操作,然后将任务与按键绑定。这种方法的缺点是您必须在工作区的.vscode
文件夹中拥有一个tasks.json
文件(它不能是全局的)。
这里是一个示例,其中我想要打开自定义GitHub远程中的文件:
// tasks.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Open in remote",
"type": "shell",
"command": "open https://github.custom.com/org/repo/blob/master/${relativeFile}#L${lineNumber}"
}
]
}
// keybindings.json
{
"key": "ctrl+o",
"command": "workbench.action.tasks.runTask",
"args": "Open in remote"
},
如果您感兴趣,这里有一些更多的VS Code变量可供使用:https://code.visualstudio.com/docs/editor/variables-reference
这里有一个长期存在的问题,应该可以在没有任务的情况下更容易地完成:https://github.com/microsoft/vscode/issues/871
我认为默认情况下,vscode不能做到这一点,但你可以尝试使用这个扩展。这对我很有用。
https://marketplace.visualstudio.com/items?itemName=mkloubert.vs-script-commands
除了@mark之外,还有一种方法可以运行任何脚本,包括bash脚本,不会与其参数冲突
"args": { "text": "npm run-script test | tee /dev/null \u000D" }
这样做将运行任何脚本,包括bash脚本,只要不与它们的参数冲突(例如尝试不使用tee的rsync)。
keybindings.json
,然后你可以插入例如以下内容: {
"key": "ctrl+shift+enter",
"command": "runCommands",
"args": {
"commands": [
"workbench.action.files.save",
"cursorBottom",
{
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "py -3 myscript.py ${file}\u000D"
}
},
]
},
"when": "editorLangId == markdown"
},
workbench.action.terminal.sendSequence
运行任何命令,别忘了通过发送exit\u000D
关闭这个临时终端。{
"key": "ctrl+alt+p",
"command": "runCommands",
"args": {
"commands": [
{
"command": "openInIntegratedTerminal",
},
{
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "npm run build\u000Dexit\u000D"
}
}
]
}
}