在VS代码中运行终端命令的快捷方式

use*_*809 5 terminal visual-studio-code

有没有一种方法可以使热键在终端中运行特定命令?说我想通过热键来编译我的TypeScript文件,而不是键入到终端“ tsc”或该命令的任何其他变体。(编辑:我知道可以在保存时重新编译TS,但问题仍然相同)

Mar*_*ark 9

通常,您将建立一个构建或另一个任务或一个npm脚本,然后使用热键触发它。

还有另一种新方法可以将文本发送到终端

例如,在您的键绑定中尝试以下操作:

{
    "key": "ctrl+alt+u",
    "command": "workbench.action.terminal.sendSequence",
    "args": {
      "text": "node -v\u000D"
    }
}
Run Code Online (Sandbox Code Playgroud)

或一个npm脚本:

 {
    "key": "ctrl+alt+u",
    "command": "workbench.action.terminal.sendSequence",
    "args": {
      "text": "npm run-script test\u000D"
    }
 }
Run Code Online (Sandbox Code Playgroud)

第一个将运行node -v命令(它\u000D是返回值,因此它将运行)。我还是建议在实际设置了一个构建任务,虽然,然后还有运行您的构建任务keychords: Ctrl- - 。shift B或npm脚本。

例如,如果要运行更复杂的脚本,请参见如何将任务绑定到键绑定如何将外部命令键绑定


编辑:从v1.32开始,您现在可以执行以下操作:

{
  "key": "ctrl+shift+t",
  "command": "workbench.action.terminal.sendSequence",
  "args": { "text": "tsc '${file}'\u000D" }
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以在键盘绑定中将内置变量(如${file})与sendSequence命令一起使用。我用${file}单引号引起来,以防您的目录结构包含名称中带有空格的文件夹。而且\u000D是回报。

  • 唯一的缺点是,如果尚未打开终端,键盘快捷键会自动失败。 (4认同)

EQu*_*per 5

我不认为 vscode 默认可以做到这一点,但你可以尝试这个扩展。这对我有用。

https://marketplace.visualstudio.com/items?itemName=mkloubert.vs-script-commands


pro*_*ion 5

您可以使用VSCode来完成此tasks任务,然后将您的任务绑定到按键绑定。这种方法的缺点是您必须tasks.json在工作空间.vscode文件夹中有一个文件(不能是全局文件)。

这是我想在自定义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"
},
Run Code Online (Sandbox Code Playgroud)

如果您感到好奇,可以使用以下一些VS Code变量:https : //code.visualstudio.com/docs/editor/variables-reference

这里有一个长期存在的问题,应该使它更容易执行而无需执行任务:https : //github.com/microsoft/vscode/issues/871